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

Mic*_*ync 9 c#

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

如果你不说"覆盖",我认为"新"已经存在.唯一的区别是,如果你不写"覆盖"(对于虚方法)或"新",你会得到一条绿线(warrning?).你仍然可以选择不写"新",它仍然可以工作.我说得对,或者我错过了重要的事情吗?

Cod*_*aos 10

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

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