Share via


Equals und Gleichheitsoperator für Werttypen überschreiben

     TypeName

OverrideEqualsAndOperatorEqualsOnValueTypes

CheckId

CA1815

Kategorie

Microsoft.Performance

Unterbrechende Änderung

NonBreaking

Ursache

Von einem öffentlichen Werttyp wird System.Object.Equals nicht überschrieben, bzw. der Gleichheitsoperator (==) wird nicht implementiert. Diese Regel überprüft keine Enumerationen.

Regelbeschreibung

Bei Werttypen wird die Reflection-Bibliothek von der geerbten Implementierung von Equals verwendet und der Inhalt aller Felder verglichen. Reflection ist rechenintensiv, und das Überprüfen eines jeden Felds auf Gleichheit ist eventuell unnötig. Wenn Sie erwarten, dass die Benutzer Instanzen vergleichen oder sortieren bzw. dass sie die Instanzen als Schlüssel für Hashtabellen verwenden, sollte der Werttyp Equals implementieren. Wenn die Programmiersprache das Überladen von Operatoren unterstützt, sollten Sie außerdem eine Implementierung der Gleichheits- und Ungleichheitsoperatoren bereitstellen.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, stellen Sie eine Implementierung von Equals bereit. Implementieren Sie den Gleichheitsoperator, falls dies möglich ist.

Warnungsausschluss

Eine Warnung dieser Regel kann gefahrlos ausgeschlossen werden, wenn Instanzen des Werttyps nicht miteinander verglichen werden.

Verwandte Regeln

Equals beim Überladen des Gleichheitsoperators überschreiben

Equals überladen beim Überschreiben des Gleichheitsoperators durch einen Werttyp

Operatoren sollten symmetrische Überladungen haben

Siehe auch

Referenz

System.Object.Equals