c# - 为什么当存在不明确的虚拟方法时此 C# 代码编译正常?

标签 c# inheritance methods overriding

我有一个类(B 类)继承了另一个包含虚方法的类(A 类)。

错误地,我在类 B 中声明(应该是)覆盖方法时省略了 override 关键字。

A 级

public class ClassA{
    public virtual void TestMethod(){
    }
}

B 级

public class ClassB : ClassA{
    public void TestMethod(){
    }
}

代码编译没有问题。谁能解释一下为什么?

最佳答案

这不是模棱两可的。它应该编译并警告说你应该指定“new”或“override”并且默认是有效的“new”。

当我尝试编译该代码时,它肯定会发出警告 - 当您说它编译“正常”和“没有问题”时,您是否忽略了警告?

关于c# - 为什么当存在不明确的虚拟方法时此 C# 代码编译正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2920233/

相关文章:

python - 动态创建具有继承和类方法的类列表

c# - 如何从 Web API 调用中获取响应

c# - 从较大的字符串中提取 Xml 元素

java - 定义一个没有任何抽象方法的抽象类

JavaScript:以两种不同的方式向对象添加静态方法

java - 在自身内部调用方法

java - 许多静态方法是否会增加程序内存/静态库

c# - 防止来自 LINQ 查询的新值

c# - 如何将 Caliburn.Micro.Logging 与 Ninject.Logging & log4net 结合使用

c++ - '{' token 之前的预期类名 - 带有头文件和 cpp 文件