今天,我在遗留代码中发现了一些东西。它具有“静态新”一项功能。看起来像这样。
class Foo
{
public static void Do()
{
Console.WriteLine("Foo.Do");
}
}
class Bar: Foo
{
public static new void Do()
{
Console.WriteLine("Bar.Do");
}
}
我不明白静态新修饰符为Do类中的方法Bar。在C#中,静态方法只能用类名调用,不能用对象名调用。所以,我认为拥有“新”和没有“新”之间没有任何区别。
一般来说,如果某些语法是不必要的,C# 就将其视为错误。
有人知道为什么 C# 允许这样的语法吗?
如果您删除new从你的代码中你得到:
警告 CS0108:“Bar.Do()”隐藏继承成员“Foo.Do()”。如果打算隐藏,请使用 new 关键字。
C# 编译器只是警告您可能正在做一些您不希望做的事情,并要求您插入new关键字来确认您知道自己在做什么。除了抑制警告之外,没有其他作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)