Beim Refactoring von Code tauchte eine ungewöhnliche Methodensignatur auf:
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
Frage: Welche Bedeutung hat das neue Schlüsselwort in dieser Methodensignatur? Handelt es sich um eine Funktion, die in C# 3.0 eingeführt wurde? Wie unterscheidet es sich vom Override?
Antwort:
Das neue Schlüsselwort in einer Methodensignatur dient einem anderen Zweck als Override. Laut der MSDN-Dokumentation von Microsoft können geerbte Mitglieder ausgeblendet werden.
Ein Beispiel, das den Unterschied veranschaulicht:
public class A { public virtual void One(); public void Two(); } public class B : A { public override void One(); public new void Two(); } B b = new B(); A a = b as A; a.One(); // Calls implementation in B a.Two(); // Calls implementation in A b.One(); // Calls implementation in B b.Two(); // Calls implementation in B
In diesem Beispiel wird Override für die One-Methode verwendet, um deren Implementierung in zu überschreiben die Basisklasse A. Andererseits wird new bei der Two-Methode verwendet, um die geerbte Implementierung von A zu verbergen.
Schlüssel Unterschied:
override modifiziert virtuelle oder abstrakte Methoden, um unterschiedliche Implementierungen in abgeleiteten Klassen bereitzustellen. Im Gegensatz dazu verbirgt „new“ geerbte Mitglieder, sowohl virtuelle als auch nicht virtuelle, sodass neue Implementierungen in abgeleiteten Klassen bereitgestellt werden können.
Das obige ist der detaillierte Inhalt vonWas bedeutet das Schlüsselwort „new' in einer C#-Methodensignatur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!