首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当存在一个不明确的虚拟方法时,为什么这个C#代码编译得很好?

当存在一个不明确的虚拟方法时,为什么这个C#代码编译得很好?
EN

Stack Overflow用户
提问于 2010-05-27 02:20:09
回答 3查看 175关注 0票数 6

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

在B类中声明(应该是)重写方法时,我错误地遗漏了override关键字。

A类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ClassA{
    public virtual void TestMethod(){
    }
}

B类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ClassB : ClassA{
    public void TestMethod(){
    }
}

编译的代码没有问题。有人能解释原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-27 02:22:39

这不是模棱两可。它应该在编译时发出警告,说明您应该指定“新”或“覆盖”,并且默认值实际上是“新的”。

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

票数 7
EN

Stack Overflow用户

发布于 2010-05-27 02:22:55

C#编译器生成一个警告。我建议您始终使用“警告为错误”进行编译。

票数 1
EN

Stack Overflow用户

发布于 2010-05-27 02:21:59

B类应该是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ClassB : ClassA{
    public override void TestMethod(){
    }
}

但是它可以在没有覆盖的情况下进行编译-它应该生成一个警告,如果它是有意添加的,您需要添加新的关键字。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ClassB : ClassA{
    public new void TestMethod(){
    }
}

查看以获取更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2920233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文