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

Konzepte

Verwendungsrichtlinien

Weitere Ressourcen

Entwurfsrichtlinien zum Entwickeln von Klassenbibliotheken