Generieren der Überschreibungsmethoden „Equals“ und „GetHashCode“ in Visual Studio
Diese Codegenerierung gilt für:
- C#
Beschreibung: Ermöglicht das Generieren von Equals- und GetHashCode-Methoden.
Hintergrund: Generieren Sie diese Überschreibungsmethoden, wenn Sie einen Typ haben, der durch ein Feld oder mehrere Felder verglichen werden soll, anstelle des Objektspeicherorts im Arbeitsspeicher.
Vorteile:
Wenn Sie einen Werttyp implementieren, sollten Sie das Überschreiben der Equals-Methode in Erwägung ziehen. Wenn Sie dies tun, können Sie gegenüber der Standardimplementierung der Equals-Methode bei ValueType eine bessere Leistung erzielen.
Wenn Sie einen Verweistyp implementieren, sollten Sie erwägen, die Equals-Methode zu überschreiben, wenn der Typ wie ein Basistyp aussieht, z. B. Point, String, BigNumber usw.
Überschreiben Sie die GetHashCode-Methode, damit ein Typ in einer Hashtabelle ordnungsgemäß funktioniert. Informieren Sie sich weiter über Gleichheitsoperatoren.
Vorgehensweise
Platzieren Sie den Cursor in der Zeile Ihrer Typdeklaration an einer beliebigen Stelle.
public class ImaginaryNumber { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } }
Ihr Code sollte in etwa wie auf dem folgenden Screenshot dargestellt aussehen:
Tipp
Doppelklicken Sie nicht auf den Typnamen. Andernfalls ist die Menüoption nicht verfügbar. Platzieren Sie den Cursor einfach an einer beliebigen Stelle in der Zeile.
Wählen Sie als Nächstes eine der folgenden Aktionen aus:
Drücken Sie STRG+., um das Menü Schnellaktionen und Refactorings aufzurufen.
Führen Sie einen Rechtsklick durch, und klicken Sie auf das Menü Schnellaktionen und Refactorings.
Klicken Sie auf das -Symbol, das am linken Rand angezeigt wird.
Klicken Sie im Dropdownmenü auf „Equals(object)“ generieren oder „Equals“ und „GetHashCode“ generieren.
Wählen Sie die Mitglieder, für die Sie die Methoden generieren wollen, im Dialogfeld Member auswählen aus:
Tipp
In diesem Dialogfeld können Sie auch über das entsprechende Kontrollkästchen unten im Dialogfeld die Generierung von Operatoren auswählen.
Die
Equals
- und dieGetHashCode
-Methode werden mit Standardimplementierungen generiert, wie im folgenden Code gezeigt:public class ImaginaryNumber : IEquatable<ImaginaryNumber> { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } public override bool Equals(object obj) { return Equals(obj as ImaginaryNumber); } public bool Equals(ImaginaryNumber other) { return other != null && RealNumber == other.RealNumber && ImaginaryUnit == other.ImaginaryUnit; } public override int GetHashCode() { return HashCode.Combine(RealNumber, ImaginaryUnit); } }
Ihr Code sollte in etwa wie auf dem folgenden Screenshot dargestellt aussehen:
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für