Freigeben über


IEquatable<T> Schnittstelle

Definition

Definiert eine generalisierte Methode, die ein Werttyp oder eine Klasse implementiert, um eine typspezifische Methode zum Bestimmen der Gleichheit von Instanzen zu erstellen.

generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of T)

Typparameter

T

Der Typ der zu vergleichenden Objekte.

Abgeleitet

Beispiele

Sehen Sie sich das Beispiel für die IEquatable<T>.Equals-Methode an.

Hinweise

Diese Schnittstelle wird durch Typen implementiert, deren Werte gleichgesetzt werden können (z. B. die numerischen und Zeichenfolgenklassen). Ein Werttyp oder eine Klasse implementiert die Equals-Methode, um eine typspezifische Methode zu erstellen, die für die Bestimmung der Gleichheit von Instanzen geeignet ist.

Anmerkung

Die IComparable<T> Schnittstelle definiert die CompareTo Methode, die die Sortierreihenfolge von Instanzen des implementierenden Typs bestimmt. Die IEquatable<T> Schnittstelle definiert die Equals Methode, die die Gleichheit von Instanzen des implementierenden Typs bestimmt.

Die IEquatable<T> Schnittstelle wird von generischen Sammlungsobjekten wie Dictionary<TKey,TValue>, List<T>und LinkedList<T> beim Testen der Gleichheit in Methoden wie Contains, IndexOf, LastIndexOfund Removeverwendet. Es sollte für jedes Objekt implementiert werden, das in einer generischen Auflistung gespeichert werden kann.

Hinweise für Ausführende

Ersetzen Sie den Typparameter der IEquatable<T>-Schnittstelle durch den Typ, der diese Schnittstelle implementiert.

Wenn Sie IEquatable<T>implementieren, sollten Sie auch die Basisklassenimplementierungen von Equals(Object) und GetHashCode() überschreiben, damit ihr Verhalten mit der Equals(T)-Methode konsistent ist. Wenn Sie Equals(Object)außer Kraft setzen, wird die außerKraftsetzungsimplementierung auch in Aufrufen der statischen Equals(System.Object, System.Object)-Methode für Ihre Klasse aufgerufen. Darüber hinaus sollten Sie die Operatoren op_Equality und op_Inequality überladen. Dadurch wird sichergestellt, dass alle Tests auf Gleichheit konsistente Ergebnisse zurückgeben.

Informationen zum Überschreiben von Equals(Object)finden Sie unter Equals(Object).

Für einen Werttyp sollten Sie immer IEquatable<T> implementieren und Equals(Object) außer Kraft setzen, um eine bessere Leistung zu erzielen. Equals(Object) Feldwerttypen und basiert auf der Reflexion, um zwei Werte für die Gleichheit zu vergleichen. Sowohl ihre Implementierung von Equals(T) als auch Ihre Außerkraftsetzung von Equals(Object) sollten konsistente Ergebnisse zurückgeben.

Wenn Sie IEquatable<T>implementieren, sollten Sie auch IComparable<T> implementieren, wenn Instanzen Ihres Typs sortiert oder sortiert werden können. Wenn Ihr Typ IComparable<T>implementiert, implementieren Sie fast immer auch IEquatable<T>.

Beachten Sie, dass es einige Designs gibt, bei denen ein Typ eine Bestellbeziehung unterstützt, die Gleichheit kann jedoch von einer Sortierbeziehung abweichen. Betrachten Sie eine Person Klasse, in der Sie alphabetisch sortieren. Zwei Personen mit demselben Namen sortieren die gleichen, sind aber nicht dieselbe Person.

Methoden

Equals(T)

Gibt an, ob das aktuelle Objekt einem anderen Objekt desselben Typs entspricht.

Gilt für:

Weitere Informationen