IEquatable<T> Rozhraní

Definice

Definuje zobecněnou metodu, kterou typ hodnoty nebo třída implementuje k vytvoření metody specifické pro typ pro určení rovnosti instancí.Defines a generalized method that a value type or class implements to create a type-specific method for determining equality of instances.

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

Parametry typu

T

Typ objektů, které mají být porovnány.The type of objects to compare.

Odvozené

Příklady

Podívejte se na příklad pro IEquatable<T>.Equals metodu.See the example for the IEquatable<T>.Equals method.

Poznámky

Toto rozhraní je implementováno pomocí typů, jejichž hodnoty mohou být rovny (například číselné a řetězcové třídy).This interface is implemented by types whose values can be equated (for example, the numeric and string classes). Typ hodnoty nebo třída implementuje Equals metodu pro vytvoření metody specifické pro typ vhodný k určení rovnosti instancí.A value type or class implements the Equals method to create a type-specific method suitable for determining equality of instances.

Poznámka

IComparable<T> RozhraníCompareTo definuje metodu, která určuje pořadí řazení instancí implementující typu.The IComparable<T> interface defines the CompareTo method, which determines the sort order of instances of the implementing type. IEquatable<T> RozhraníEquals definuje metodu, která určuje rovnost instancí implementující typu.The IEquatable<T> interface defines the Equals method, which determines the equality of instances of the implementing type.

LinkedList<T> List<T> LastIndexOf Contains IndexOfRozhraní je používáno objekty Dictionary<TKey,TValue>obecné kolekce, jako jsou, a při testovánírovnostivtěchtometodáchjako,,a.Remove IEquatable<T>The IEquatable<T> interface is used by generic collection objects such as Dictionary<TKey,TValue>, List<T>, and LinkedList<T> when testing for equality in such methods as Contains, IndexOf, LastIndexOf, and Remove. Měla by být implementována pro libovolný objekt, který může být uložen v obecné kolekci.It should be implemented for any object that might be stored in a generic collection.

Poznámky pro implementátory

Nahraďte parametr IEquatable<T> typu rozhraní typem, který implementuje toto rozhraní.Replace the type parameter of the IEquatable<T> interface with the type that is implementing this interface. Pokud implementujete IEquatable<T>, měli byste také přepsat Equals(Object) implementace základní třídy a GetHashCode() tak, aby Equals(T) jejich chování bylo konzistentní s metodou.If you implement IEquatable<T>, you should also override the base class implementations of Equals(Object) and GetHashCode() so that their behavior is consistent with that of the Equals(T) method. Pokud přepíšete Equals(Object), přepsaná implementace je volána také v volání statické Equals(System.Object, System.Object) metody třídy.If you do override Equals(Object), your overridden implementation is also called in calls to the static Equals(System.Object, System.Object) method on your class. Kromě toho byste měli přetížit op_Equality operátory a. op_InequalityIn addition, you should overload the op_Equality and op_Inequality operators. Tím zajistíte, že všechny testy rovnosti vrátí konzistentní výsledky.This ensures that all tests for equality return consistent results.

Informace o přepsání Equals(Object) Equals(Object) najdete v článku.For information on overriding Equals(Object), see the Equals(Object) article.

Pro typ hodnoty byste měli vždy implementovat IEquatable<T> a přepsat Equals(Object) pro lepší výkon.For a value type, you should always implement IEquatable<T> and override Equals(Object) for better performance. Equals(Object)typy polí a spoléhá na reflexi pro porovnání dvou hodnot pro rovnost.Equals(Object) boxes value types and relies on reflection to compare two values for equality. Vaše implementace Equals(T) i Equals(Object) přepsání by měly vracet konzistentní výsledky.Both your implementation of Equals(T) and your override of Equals(Object) should return consistent results. Pokud implementujete IEquatable<T>, měli byste také implementovat IComparable<T> , pokud lze instance vašeho typu seřadit nebo seřadit.If you implement IEquatable<T>, you should also implement IComparable<T> if instances of your type can be ordered or sorted. Pokud váš typ implementuje IComparable<T>, je téměř vždy také implementováno. IEquatable<T>If your type implements IComparable<T>, you almost always also implement IEquatable<T>.

Všimněte si, že existují některé návrhy, kde typ podporuje relaci objednávky, ale rovnost může být odlišná od vztahu řazení.Note that there are some designs where a type supports an order relation, but equality may be distinct from an ordering relation. `Person` Zvažte třídu, ve které řadíte abecedně.Consider a `Person` class where you sort alphabetically. Dva lidé se stejným názvem řadí stejný název, ale nejsou stejnými osobami.Two people with the same name sort the same, but are not the same person.

Metody

Equals(T)

Označuje, zda je aktuální objekt roven jinému objektu stejného typu.Indicates whether the current object is equal to another object of the same type.

Platí pro

Viz také