今天,我在遗留代码中发现了一些东西。它具有一项功能的“静态新”。它看起来像这样。
class Foo
{
public static void Do()
{
Console.WriteLine("Foo.Do");
}
}
class Bar: Foo
{
public static new void Do()
{
Console.WriteLine("Bar.Do");
}
}
我不理解类Bar中Do方法的静态 new修饰符。在 C# 中,静态方法只能使用类名而不是对象名来调用。所以,我认为拥有“新”和没有“新”之间没有任何区别。
通常,如果某些语法是不必要的,C# 只是将其视为错误。有人知道为什么 C# 允许这样的语法吗?