Richtlinien für die Implementierung der Equals-Methode und des Gleichheitsoperators (==)
Im Folgenden werden die Richtlinien für die Implementierung der Equals-Methode und des Gleichheitsoperators (==) beschrieben.
Implementieren Sie die GetHashCode-Methode immer, wenn Sie die Equals-Methode verwenden. Dadurch bleiben Equals und GetHashCode synchron.
Überschreiben Sie immer die Equals-Methode, wenn Sie den Gleichheitsoperator (==) implementieren, und lassen Sie die Überschreibung dieselbe Aufgabe ausführen. Dadurch verhält sich Infrastrukturcode, z. B. Hashtable und ArrayList, der die Equals-Methode verwendet, genau wie Benutzercode, der unter Verwendung des Gleichheitsoperators geschrieben wurde.
Überschreiben Sie die Equals‑Methode immer, wenn Sie die IComparable-Schnittstelle implementieren.
Implementieren Sie die Operatorüberladung für die Operatoren gleich (==), ungleich (!=), kleiner als (<) und größer als (>), wenn Sie IComparable implementieren.
Lösen Sie keine Ausnahmen über die Equals‑ oder die GetHashCode-Methode oder über den Gleichheitsoperator (==) aus.
Weitere Informationen über die Equals-Methode finden Sie unter Implementieren der Equals-Methode.
Implementieren des Gleichheitsoperators (==) für Werttypen
In den meisten Programmiersprachen gibt es keine Standardimplementierung des Gleichheitsoperators (==) für Werttypen. Deshalb sollten Sie den Gleichheitsoperator (==) immer überladen, wenn die Verwendung von Gleichheit sinnvoll ist.
Sie sollten die Implementierung der Equals-Methode für Werttypen in Erwägung ziehen, weil die Standardimplementierung für System.ValueType nicht so gut funktioniert wie Ihre benutzerdefinierte Implementierung.
Implementieren Sie immer den Gleichheitsoperator (==), wenn Sie die Equals‑Methode überschreiben.
Implementieren des Gleichheitsoperators (==) für Verweistypen
In den meisten Programmiersprachen wird eine Standardimplementierung des Gleichheitsoperators (==) für Verweistypen bereitgestellt. Gehen Sie daher bei der Implementierung des Gleichheitsoperators (==) für Verweistypen umsichtig vor. Die meisten Verweistypen, einschließlich der Verweistypen, die die Equals-Methode implementieren, sollten den Gleichheitsoperator (==) nicht überschreiben.
Überschreiben Sie den Gleichheitsoperator (==), wenn der Typ ein Basistyp, z. B. Point
, String
, BigNumber
usw., ist. Wenn Sie beabsichtigen, den Additions- (+) und den Subtraktionsoperator (-) zu überladen, sollten Sie stets auch den Gleichheitsoperator (==) überladen.
Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.
Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.
Weitere Informationen zu Entwurfsrichtlinien finden Sie im Buch "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" von Krzysztof Cwalina und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.
Siehe auch
Referenz
Implementieren der Equals-Methode
Object.Equals Method