“new"关键字在c#中只是为了使警告消失,不是吗?

本文关键字:警告 消失 quot new 关键字 | 更新日期: 2023-09-27 18:18:01

我无意中在方法签名中遇到了这个页面的新关键字,我发现这篇文章中给出的一些例子是不准确的(例如第二个)

如果你不说"override",我认为"new"已经存在了。唯一的区别是,如果你不写"override"(对于虚拟方法)或"new",你会得到一条绿线(警告?)。你仍然可以选择不写"new",它仍然可以工作。我这么说对吗,还是我漏掉了什么重要的东西?

“new"关键字在c#中只是为了使警告消失,不是吗?

是,它不做任何事情,除了隐藏警告。

这个警告只是为了确保你知道你在做什么,因为隐藏并不是一个好主意。但是,如果基类引入了一个新的虚方法,而派生类碰巧有一个匹配但独立的方法,并且现在意外地覆盖了继承的方法,那么将override作为默认值将导致版本控制问题。

我相信这基本上是为了让你可以在你的代码中声明意图。

所以如果你想在基类中隐藏一个方法,你可以使用新的指令来告诉你自己和其他人,你是故意这么做的。也就是说,你没有在无知的情况下添加一个与现有方法同名的全新方法。