Heute habe ich etwas in Legacy-Code gefunden. Es hat "statisch neu" für eine Funktion. Es sieht aus wie das.Was ist der Modifikator "statisch neu" für eine Funktion?
class Foo
{
public static void Do()
{
Console.WriteLine("Foo.Do");
}
}
class Bar: Foo
{
public static new void Do()
{
Console.WriteLine("Bar.Do");
}
}
Ich verstehe nicht, den statischen neuen Modifikator für die Do Methode in der Klasse Bar. In C# kann die statische Methode nur mit dem Klassennamen anstelle des Objektnamens aufgerufen werden. Also, ich denke nicht, dass es einen Unterschied zwischen dem "Neuen" und nicht dem Unterschied gibt.
Im Allgemeinen, wenn einige Syntax unnötig ist, C# nur behandeln es ist ein Fehler. Hat jemand eine Vorstellung davon, warum C# eine solche Syntax zulässt?
Es ist erwähnenswert, dass es _only_ eine Warnung unterdrückt. Keine anderen Effekte. –
Guter Punkt. Ich habe das dem Anwer hinzugefügt. –
Während es nur die Warnung unterdrückt, macht es die Absicht explizit (um jede Verwirrung zu vermeiden), überprüfen Sie meine Antwort – eglasius