Сегодня я нашел что-то в устаревшем коде. Он имеет "статическое новое" для одной функции. Это выглядит так.
class Foo
{
public static void Do()
{
Console.WriteLine("Foo.Do");
}
}
class Bar: Foo
{
public static new void Do()
{
Console.WriteLine("Bar.Do");
}
}
Я не понимаю модификатор static new для метода Do в классе Бар. В С# статический метод может быть вызван только с именем класса вместо имени объекта. Итак, я не думаю, что есть разница между "новым" и нет.
В общем случае, если какой-то синтаксис не нужен, С# просто обрабатывает ошибку. Кто-нибудь имеет представление о том, почему С# допускает такой синтаксис?