有些类有一些众所周知的选择器,如UIView层.如果有人为UIView创建子类并为不同的目的声明自己的"图层"选择器,该怎么办?然后是其他一些框架,比如UIKit本身在UIView实例上调用图层.这将在子类上调用"layer"并导致崩溃?
我可以自己回答这个问题,写一个虚拟测试,但我想知道人们对这个问题的看法.这里是:
当我们同时重载和覆盖时,将调用哪种方法?我只考虑类型重载而不是arity重载和类型重载是相关的.
让我举个例子:
class AA {}
class BB : AA {}
class A {
public virtual void methodA(AA anAA) { Console.Write("A:methodA(AA) called"); }
public virtual void methodA(BB aBB) { Console.Write("A:methodA(BB) called"); }
}
class B : A {
public override void methodA(AA anAA) { Console.Write("B:methodA(AA) called"); }
}
new B().methodA(new BB()); // Case 1
new B().methodA(new AA()); // Case 2
new B().methodA((AA)new BB()); // Case 3
Run Code Online (Sandbox Code Playgroud)
你能说出案例1,2和3会发生什么吗?
我个人认为过载是邪恶的,并且没有一致的想法可以导致可预测的答案.这完全基于编译器+ vm中实现的约定.
编辑:如果您对过载是邪恶的原因有疑问,可以阅读Gilad Brach的博客文章
谢谢
我有一个使用 SQLDependency 的应用程序。我想在插入新行时向用户显示插入到数据库表中的最新行。
当我的查询是一个简单的 select 语句时,这按预期工作,但鉴于我想显示最近插入的行,我将查询编写为SELECT TOP语句。这导致了多个异常。回顾这个问题后,我了解到这TOP对 SQLDependency 无效,因此我必须找到其他一些解决方案。
这让我想知道两件事:
A) SQLDependency 不支持TOP表达式的原因是什么?
B)我想出的解决方案是根据 id 对结果进行排序并只显示最后一个。这工作正常,但我的表目前只有很少的行。我正在使用数据集,所以我预计它会在插入更多行后变慢 - 这就是为什么我想将查询限制为仅最近的行。有一个更好的方法吗?
我正在制作一个网站(wordpress multisite),为用户提供2种语言支持,有2种方法我们将使用它:
- 通过Geo IP检测语言
- 通过Internet浏览器检测语言
哪种方法最好用呢?
提前致谢!
好的,这是一个简单的C代码,但由于一些未知的原因,该程序拒绝编译并给出分段错误11请帮助我
#include <stdio.h>
typedef struct {
int P_answer[9];
int number;
} BOX;
int main()
{
BOX Matrix[8][8];
int i,j;
int k;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
Matrix[i][j].number=0;
Matrix[i][j].P_answer[0]=1;
Matrix[i][j].P_answer[1]=2;
Matrix[i][j].P_answer[2]=3;
Matrix[i][j].P_answer[3]=4;
Matrix[i][j].P_answer[4]=5;
Matrix[i][j].P_answer[5]=6;
Matrix[i][j].P_answer[6]=7;
Matrix[i][j].P_answer[7]=8;
Matrix[i][j].P_answer[8]=9;
}
}
}
Run Code Online (Sandbox Code Playgroud) .net ×1
c ×1
c# ×1
detect ×1
objective-c ×1
overloading ×1
overriding ×1
php ×1
selector ×1
sql-server ×1
wordpress ×1