


Versionierung mit Override und neuen Schlüsselwörtern (C#-Programmierhandbuch)
Ursprüngliche Adresse: Klicken Sie hier, um den Link zu öffnen
Das hat viele Bedeutungen. Dies bedeutet beispielsweise, dass die Einführung eines neuen Mitglieds in einer Basisklasse mit demselben Namen wie ein Mitglied in einer abgeleiteten Klasse in C# vollständig unterstützt wird und nicht zu unerwartetem Verhalten führt. Es bedeutet auch, dass die Klasse explizit deklarieren muss, ob eine Methode eine geerbte Methode überschreiben soll oder eine neue Methode sein soll, die eine geerbte Methode mit einem ähnlichen Namen verbirgt.
In C# kann eine abgeleitete Klasse Methoden mit denselben Namen wie Basisklassenmethoden enthalten.
Basisklassenmethoden müssen als virtuell definiert werden.
Wenn einer Methode in einer abgeleiteten Klasse nicht das Schlüsselwort new oder override vorangestellt ist, gibt der Compiler eine Warnung aus und die Methode wird so angezeigt, als ob sie vorhanden wäre neu Führen Sie die gleichen Vorgänge wie Schlüsselwörter aus.
Wenn einer Methode in einer abgeleiteten Klasse das Schlüsselwort new vorangestellt ist, wird die Methode als unabhängig von der Methode in der Basis definiert Klasse .
Wenn einer Methode in einer abgeleiteten Klasse das Schlüsselwort override vorangestellt ist, ruft das Objekt der abgeleiteten Klasse stattdessen die Methode auf Aufrufen von Basisklassenmethoden.
Sie können das Schlüsselwort base verwenden, um Basisklassenmethoden aus einer abgeleiteten Klasse aufzurufen. Die Schlüsselwörter
override, virtual und new können auch für Attribute und Indizes verwendet werden Geräte und Ereignisse.
Wenn eine Methode als virtuell deklariert ist, kann jede Klasse, die diese Methode erbt, ihre eigene Version implementieren. Um eine Methode virtuell zu machen, müssen Sie den Modifikator virtual in der Methodendeklaration der Basisklasse verwenden. Dann kann die abgeleitete Klasse die virtuelle Basismethode mit dem Schlüsselwort override überschreiben oder das Schlüsselwort new verwenden, um die virtuelle Methode in der Basisklasse auszublenden. Wenn weder das Schlüsselwort override noch das Schlüsselwort new angegeben sind, gibt der Compiler eine Warnung aus und Methoden in der abgeleiteten Klasse verbergen Methoden in der Basisklasse.
GraphicsClass lautet wie folgt:
C#
class GraphicsClass { public virtual void DrawLine() { } public virtual void DrawPoint() { } }
Ihr Unternehmen verwendet diese Klasse. Und Sie verwenden es, um Ihre eigene Klasse abzuleiten, wenn Sie neue Methoden hinzufügen:
C#
class YourDerivedGraphicsClass : GraphicsClass { public void DrawRectangle() { } }
Ihre Anwendung läuft einwandfrei, bis Unternehmen A eine neue Version von GraphicsClass veröffentlicht, ähnlich dem folgenden Code:
C#
class GraphicsClass { public virtual void DrawLine() { } public virtual void DrawPoint() { } public virtual void DrawRectangle() { } }
Am Anfang gab es keine Probleme. Die neue Version bleibt binärkompatibel mit der alten Version. Jede bereitgestellte Software funktioniert weiterhin normal, auch wenn neue Klassen auf dem Computersystem installiert werden, auf dem sich die Software befindet. In Ihrer abgeleiteten Klasse verweisen alle vorhandenen Aufrufe der Methode DrawRectangle weiterhin auf Ihre Version.
Diese Warnung soll Sie daran erinnern, dass Sie überlegen müssen, wie die DrawRectangle-Methode in Ihrer Anwendung funktionieren soll.
Wenn Sie möchten, dass Ihre Methode die neue Basisklassenmethode überschreibt, verwenden Sie bitte das Schlüsselwort override:
C#
class YourDerivedGraphicsClass : GraphicsClass { public override void DrawRectangle() { } }
派生自 YourDerivedGraphicsClass 的对象仍可以使用基关键字访问DrawRectangle 的基类版本
C#
base.DrawRectangle();
为了避免这两个方法之间发生混淆,可以重命名您的方法。 这可能很耗费时间且容易出错,而且在某些情况下并不可行。 但是,如果您的项目相对较小,则可以使用 Visual Studio 的重构选项来重命名方法。 有关更多信息,请参见重构类和类型(类设计器)。
或者,也可以通过在派生类定义中使用关键字 new 来防止出现该警告:
C#
class YourDerivedGraphicsClass : GraphicsClass { public new void DrawRectangle() { } }
这是默认行为。
重写和方法选择
下面的方法将是兼容的:
C#
public class Derived : Base { public override void DoWork(int param) { } public void DoWork(double param) { } }
重写方法不被视为是在类上进行声明的,而是在基类上声明的方法的新实现。 仅当 C# 编译器无法将方法调用与 Derived 上的原始方法匹配时,它才尝试将该调用与具有相同名称和兼容参数的重写方法匹配。 例如:
C#
int val = 5; Derived d = new Derived(); d.DoWork(val); // Calls DoWork(double).
有两种方法可以避免此情况。 首先,避免将新方法声明为与虚方法同名。 其次,可以通过将 Derived 的实例强制转换为 Base 来使 C# 编译器搜索基类方法列表,从而使其调用虚方法。 由于是虚方法,因此将调用 Derived 上的 DoWork(int) 的实现。 例如:
C#
((Base)d).DoWork(val); // Calls DoWork(int) on Derived.
有关 new 和 override的更多示例,请参见 了解何时使用 Override 和 New 关键字(C# 编程指南)。
以上就是使用 Override 和 New 关键字进行版本控制(C# 编程指南)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Um die C# .NET -Entwicklung zu starten, müssen Sie: 1. Verstehen Sie das Grundkenntnis von C# und die Kernkonzepte des .NET -Frameworks; 2. Meister Sie die grundlegenden Konzepte von Variablen, Datentypen, Kontrollstrukturen, Funktionen und Klassen; 3.. 4. Mit Debugging -Techniken und Leistungsoptimierungsmethoden für häufige Fehler vertraut sein. Mit diesen Schritten können Sie nach und nach in die Welt von C#.NET eindringen und effiziente Anwendungen schreiben.

Die Beziehung zwischen C# und .NET ist untrennbar miteinander verbunden, aber nicht dasselbe. C# ist eine Programmiersprache, während .NET eine Entwicklungsplattform ist. C# wird verwendet, um Code zu schreiben, in .NETs Intermediate Language (IL) zu kompilieren und von der .NET -Laufzeit (CLR) ausgeführt zu werden.

C#.NET ist immer noch wichtig, da es leistungsstarke Tools und Bibliotheken bietet, die mehrere Anwendungsentwicklung unterstützen. 1) C# kombiniert .NET Framework, um die Entwicklung effizient und bequem zu machen. 2) Mechanismus zum Typensicherheit und Müllsammlung von C#erhöht die Vorteile. 3) .NET bietet eine plattformübergreifende laufende Umgebung und eine reichhaltige APIs, wodurch die Flexibilität der Entwicklung verbessert wird.

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C# und .NET passen sich durch kontinuierliche Aktualisierungen und Optimierungen an die Bedürfnisse neuer Technologien an. 1) C# 9.0 und .NET5 Führen Sie den Datensatztyp und die Leistungsoptimierung ein. 2) .NETCORE verbessert die native und containerische Unterstützung von Cloud. 3) ASP.NetCore integriert sich in moderne Webtechnologien. 4) ML.NET unterstützt maschinelles Lernen und künstliche Intelligenz. 5) Asynchrone Programmierung und Best Practices verbessern die Leistung.

C#.NetissoBableFoREenterPrise-Level Applications-WithemicrosoftCosystemDuetoitsStrongtyPing, Richlibrary, Androbustperformance.

Der Programmierungsprozess von C# in .NET enthält die folgenden Schritte: 1) Schreiben von C# Code, 2) Kompilieren in eine mittlere Sprache (IL) und 3), die durch die .NET -Laufzeit (CLR) ausführt. Die Vorteile von C# in .NET sind die moderne Syntax, das leistungsstarke Typsystem und die enge Integration in das .NET -Framework, das für verschiedene Entwicklungsszenarien geeignet ist, von Desktop -Anwendungen bis hin zu Webdiensten.

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft und als Teil des .NET-Frameworks entwickelt wurde. 1.C# unterstützt die objektorientierte Programmierung (OOP), einschließlich Einkapselung, Vererbung und Polymorphismus. 2. Asynchrones Programmieren in C# wird über Async implementiert und wartet auf Schlüsselwörter, um die Reaktionsfähigkeit der Anwendungen zu verbessern. 3.. Verwenden Sie LINQ, um Datensammlungen präzise zu verarbeiten. 4. Häufige Fehler umfassen Null-Referenzausnahmen und Indexausnahmen außerhalb des Bereichs. Zu den Debugging -Fähigkeiten gehört die Verwendung eines Debuggers und Ausnahmeberechnung. 5. Leistungsoptimierung umfasst die Verwendung von StringBuilder und das Vermeiden von unnötigem Packung und Unboxing.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)