Heim >Backend-Entwicklung >C++ >Was bewirkt das Schlüsselwort „new' in C#-Methodensignaturen?

Was bewirkt das Schlüsselwort „new' in C#-Methodensignaturen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-02 18:54:38752Durchsuche

What Does the `new` Keyword Do in C# Method Signatures?

Das „neue“ Schlüsselwort in Methodensignaturen verstehen

Während einer Code-Umgestaltung hat ein Entwickler versehentlich ein neues Schlüsselwort in eine Methodensignatur eingeführt:

private static new MyObject CreateSomething()
{
  return new MyObject{"Something New"};
}

Dies wird ordnungsgemäß in C# kompiliert, was Fragen zur Bedeutung des neuen Schlüsselworts in der Methode aufwirft Signaturen.

Was bedeutet das Schlüsselwort „new“?

Wie in der MSDN-Dokumentation erwähnt, ändert das Schlüsselwort new in einer Methodensignatur ihr Referenzierungsverhalten:

  1. Versteckt geerbte Methoden: Bei Verwendung in einer abgeleiteten Klasse verhindert das neue Schlüsselwort das geerbte Implementierung einer Methode vor der Wiederverwendung schützen. Stattdessen wird die Methode in der abgeleiteten Klasse als völlig neue Methode behandelt.
  2. Überschreibt nicht-virtuelle und statische Methoden:Im Gegensatz zum Schlüsselwort override, das nur virtuelle Methoden überschreiben kann, ist das neue Das Schlüsselwort ermöglicht das Überschreiben nicht virtueller und sogar statischer Methoden in der Basis Klasse.

Beispiel:

Betrachten Sie den folgenden Code:

public class A
{
   public virtual void One();
   public static void Two();
}

public class B : A
{
   public new void One();
   public override 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 definiert die Klasse B beide Einsen neu Methode (mit new) und die Two-Methode (mit override). Durch die Verwendung von new for One verbirgt Klasse B die geerbte Implementierung und führt eine eigene ein. Durch die Verwendung von Override für Two wird jedoch die geerbte virtuelle Methode überschrieben.

Daher bietet das neue Schlüsselwort Flexibilität, indem es das Überschreiben oder Ausblenden geerbter Methoden in Fällen ermöglicht, in denen Override nicht anwendbar ist, z. B. für nicht virtuelle und statische Methoden.

Das obige ist der detaillierte Inhalt vonWas bewirkt das Schlüsselwort „new' in C#-Methodensignaturen?. 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