IEquatable<T> Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
, LastIndexOf
und Remove
verwendet. 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. |