C# &引用;新";C中的关键字只是为了让警告消失,不是吗;不是吗?

C# &引用;新";C中的关键字只是为了让警告消失,不是吗;不是吗?,c#,C#,我无意中看到了这一页,我发现这篇文章中给出的一些例子并不准确(例如第二个) 如果你不说“覆盖”,我想“新”已经存在了。唯一的区别是,如果不编写“override”(对于虚拟方法)或“new”,您将得到一条绿线(warrning?)。你仍然可以选择不写“new”,它仍然可以工作。我说的对吗,还是我遗漏了什么重要的东西?是的,除了隐藏警告之外,它什么都没做 警告只是为了确保你知道自己在做什么,因为躲藏起来很少是个好主意。但是,如果基类引入了一个新的虚拟方法,而派生类恰好有一个匹配但独立的方法,而该方

我无意中看到了这一页,我发现这篇文章中给出的一些例子并不准确(例如第二个)


如果你不说“覆盖”,我想“新”已经存在了。唯一的区别是,如果不编写“override”(对于虚拟方法)或“new”,您将得到一条绿线(warrning?)。你仍然可以选择不写“new”,它仍然可以工作。我说的对吗,还是我遗漏了什么重要的东西?

是的,除了隐藏警告之外,它什么都没做


警告只是为了确保你知道自己在做什么,因为躲藏起来很少是个好主意。但是,如果基类引入了一个新的虚拟方法,而派生类恰好有一个匹配但独立的方法,而该方法现在意外地覆盖了继承的方法,那么将
重写为默认值将导致版本控制问题。

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


因此,如果您想在基类中隐藏一个方法,您可以使用新指令告诉您自己和其他人,您是故意这么做的。i、 e.你没有添加一个与现有onne同名的全新方法。

这是重复的-看看Eric Lippert的回答,第二个我想你是指这个:(并非所有的方法都具有相同的排序顺序)这确实是准确的,并强调了为什么它是一个警告。这段代码很可能会做一些预期的其他事情。编译时类型很少比运行时类型更重要,但在本例中,它是为了分享Eric Lippert的答案。。但我无法回答,因为它在评论中。谢谢。