我有一个类(B类),它继承了另一个包含虚拟方法的类(A类)。
在B类中声明(应该是)重写方法时,我错误地遗漏了override
关键字。
A类
public class ClassA{
public virtual void TestMethod(){
}
}
B类
public class ClassB : ClassA{
public void TestMethod(){
}
}
编译的代码没有问题。有人能解释原因吗?
发布于 2010-05-27 02:22:39
这不是模棱两可。它应该在编译时发出警告,说明您应该指定“新”或“覆盖”,并且默认值实际上是“新的”。
当我试图编译该代码时,它肯定会发出警告--当您说它编译“好”和“没有问题”时,您是否忽略了警告?
发布于 2010-05-27 02:22:55
C#编译器生成一个警告。我建议您始终使用“警告为错误”进行编译。
发布于 2010-05-27 02:21:59
B类应该是
public class ClassB : ClassA{
public override void TestMethod(){
}
}
但是它可以在没有覆盖的情况下进行编译-它应该生成一个警告,如果它是有意添加的,您需要添加新的关键字。
public class ClassB : ClassA{
public new void TestMethod(){
}
}
查看这以获取更多信息
https://stackoverflow.com/questions/2920233
复制相似问题