Sdílet prostřednictvím


IEquatable<T> Rozhraní

Definice

Definuje generalizovanou metodu, kterou typ hodnoty nebo třída implementuje k vytvoření metody specifické pro typ pro určení rovnosti instancí.

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é chcete porovnat.

Odvozené

Příklady

Podívejte se na příklad metody IEquatable<T>.Equals.

Poznámky

Toto rozhraní je implementováno pomocí typů, jejichž hodnoty lze rovníkovat (například číselné a řetězcové třídy). Typ hodnoty nebo třída implementuje metodu Equals k vytvoření metody specifické pro typ, která je vhodná pro určení rovnosti instancí.

Poznámka

Rozhraní IComparable<T> definuje CompareTo metodu, která určuje pořadí řazení instancí implementového typu. Rozhraní IEquatable<T> definuje Equals metodu, která určuje rovnost instancí implementového typu.

Rozhraní IEquatable<T> používá obecné objekty kolekce, jako jsou Dictionary<TKey,TValue>, List<T>a LinkedList<T> při testování rovnosti v takových metodách, jako jsou Contains, IndexOf, LastIndexOfa Remove. Měla by být implementována pro všechny objekty, které by mohly být uloženy v obecné kolekci.

Poznámky pro implementátory

Nahraďte parametr typu rozhraní IEquatable<T> typem, který implementuje toto rozhraní.

Pokud implementujete IEquatable<T>, měli byste také přepsat implementace základní třídy Equals(Object) a GetHashCode() tak, aby jejich chování bylo konzistentní s Equals(T) metodou. Pokud přepíšete Equals(Object), přepsaná implementace se také volá ve volání statické Equals(System.Object, System.Object) metody ve vaší třídě. Kromě toho byste měli přetížit operátory op_Equality a op_Inequality. Tím zajistíte, že všechny testy rovnosti vrátí konzistentní výsledky.

Informace o přepsání Equals(Object)naleznete v tématu Equals(Object).

Pro typ hodnoty byste měli vždy implementovat IEquatable<T> a přepsat Equals(Object) pro lepší výkon. Equals(Object) polích hodnotových typů a spoléhá na reflexi při porovnání dvou hodnot rovnosti. Implementace Equals(T) i přepsání Equals(Object) by měly vrátit konzistentní výsledky.

Pokud implementujete IEquatable<T>, měli byste také implementovat IComparable<T>, pokud je možné řadit nebo řadit instance typu. Pokud váš typ implementuje IComparable<T>, téměř vždy implementujete IEquatable<T>.

Všimněte si, že existuje několik návrhů, ve kterých typ podporuje relaci pořadí, ale rovnost se může lišit od relace řazení. Zvažte Person třídu, ve které seřadíte abecedně. Dva lidé se stejným jménem se seřadí stejné, ale nejsou stejní.

Metody

Equals(T)

Určuje, zda je aktuální objekt roven jinému objektu stejného typu.

Platí pro

Viz také