Heim >Backend-Entwicklung >C++ >Was bedeutet das Schlüsselwort „new' in einer C#-Methodensignatur?

Was bedeutet das Schlüsselwort „new' in einer C#-Methodensignatur?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 02:17:39661Durchsuche

What Does the `new` Keyword Mean in a C# Method Signature?

Das neue Schlüsselwort in Methodensignaturen verstehen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn