IEquatable<T> Schnittstelle

Definition

Definiert eine generalisierte Methode, die von einem Werttyp oder von einer Klasse zur Erstellung einer typspezifischen Methode implementiert wird, um die Gleichheit von Instanzen zu ermitteln.

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 -Methode an IEquatable<T>.Equals .

Hinweise

Diese Schnittstelle wird durch Typen implementiert, deren Werte gleichgesetzt werden können (z. B. die Numerische- und Zeichenfolgenklasse). Ein Werttyp oder eine -Klasse implementiert die Equals -Methode, um eine typspezifische Methode zu erstellen, die zum Bestimmen der Gleichheit von Instanzen geeignet ist.

Hinweis

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 Auflistungsobjekten wie Dictionary<TKey,TValue>, List<T>und verwendet, wenn LinkedList<T> in Methoden wie Contains, , IndexOfLastIndexOfund Removeauf Gleichheit getestet wird. 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 implementieren IEquatable<T>, sollten Sie auch die Basisklassenimplementierungen von Equals(Object) und GetHashCode() außer Kraft setzen, damit ihr Verhalten mit dem Equals(T) der -Methode konsistent ist. Wenn Sie überschreiben Equals(Object), wird Ihre überschriebene Implementierung auch in Aufrufen der statischen Equals(System.Object, System.Object) Methode für Ihre Klasse aufgerufen. Darüber hinaus sollten Sie die op_Equality Operatoren und op_Inequality überladen. Dadurch wird sichergestellt, dass alle Tests auf Gleichheit konsistente Ergebnisse zurückgeben.

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

Für einen Werttyp sollten Sie immer implementieren IEquatable<T> und überschreiben Equals(Object) , um die Leistung zu verbessern. Equals(Object) boxt Werttypen und basiert auf Reflektion, um zwei Werte auf Gleichheit zu vergleichen. Sowohl Ihre Implementierung von Equals(T) als auch Ihre Überschreibung von Equals(Object) sollten konsistente Ergebnisse zurückgeben.

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

Beachten Sie, dass es einige Designs gibt, in denen ein Typ eine Reihenfolgenbeziehung unterstützt, die Gleichheit kann sich jedoch von einer Reihenfolgenbeziehung unterscheiden. Betrachten Sie eine Person Klasse, in der Sie alphabetisch sortieren. Zwei Personen mit dem gleichen Namen sortieren die gleiche, sind aber nicht dieselbe Person.

Methoden

Equals(T)

Gibt an, ob das aktuelle Objekt gleich einem anderen Objekt des gleichen Typs ist.

Gilt für:

Weitere Informationen