„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Virtual/Override vs. NEU in C#: Wann sollte ich welches Schlüsselwort für die Überschreitung von Methoden verwenden?

Virtual/Override vs. NEU in C#: Wann sollte ich welches Schlüsselwort für die Überschreitung von Methoden verwenden?

Gepostet am 2025-02-06
Durchsuche:673

Virtual/Override vs. New in C#: When Should I Use Which Keyword for Method Overriding?

virtual/override und neue Schlüsselwörter in C#: Wann kann ich welches Schlüsselwort verwenden, um die Methode neu zu schreiben?

Bei der Definition von Methoden in Basisklassen stehen Programmierer häufig vor dem Problem, ob die Schlüsselwörter "virtuelle" oder "neue" verwendet werden sollen. Diese Entscheidung beeinflusst das Verhalten der Umschreibung in abgeleiteten Klassen erheblich.

virtual override

Verwenden Sie das Schlüsselwort "Virtual" in der Basisklassenmethode, um anzuzeigen, dass es in der abgeleiteten Klasse überschrieben werden kann. Um die Methode zu überschreiben, muss die abgeleitete Klasse das Schlüsselwort "Override" verwenden. Dies stellt sicher, dass die überragende Methode wie erwartet funktioniert und die Vererbungshierarchie und Polymorphismus aufrechterhalten.

Wenn die abgeleitete Klasse eine umgeschriebene Methode aufruft, wird die überschriebene Version durchgeführt, auch wenn die Referenzvariable, die das Objekt hält, vom Basisklassentyp enthält. Dies wird als späte Bindung bezeichnet und ermöglicht ein dynamisches Verhalten.

New Keyword

Stattdessen deklariert das "neue" Schlüsselwort in der abgeleiteten Klassenmethode eine neue Methode, die vererbte Methoden mit demselben Namen versteckt. Bei Verwendung ersetzt die neue Methode ererbte Methoden in der abgeleiteten Klasse und zerstört so den Polymorphismus.

Wenn die abgeleitete Klasse eine mit "neue" deklarierte Methode aufruft, wird die neue Methode unabhängig von der Art der Referenzvariablen ausgeführt, die das Objekt enthält. Dies gilt als frühes Bindung und behindert den Polymorphismus.

Beispiel

Betrachten Sie das folgende Code -Beispiel:

public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public new bool DoSomething() { return true; }
}

Wenn Sie eine Instanz von einer Variablen der Typ -Basis abgeleitet und doSomething () aufrufen, ist das Ergebnis falsch, wenn Sie virtuell/überschreiben. Wenn Sie jedoch neu verwenden, ist das Ergebnis wahr. Dies unterstreicht den Unterschied zwischen verspäteter Bindung und frühzeitiger Bindung.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3