Sdílet prostřednictvím


IEquatable<T> Rozhraní

Definice

Definuje zobecněnou metodu, kterou hodnotový typ 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é se mají 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ítko (například číselné třídy a třídy řetězců). Hodnotový typ nebo třída implementuje metodu Equals pro vytvoření metody specifické pro typ, která je vhodná pro určení rovnosti instancí.

Poznámka

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

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

Poznámky pro implementátory

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

Pokud implementujete IEquatable<T>, měli byste také přepsat implementace Equals(Object) základní třídy a GetHashCode() tak, aby jejich chování bylo konzistentní s chováním Equals(T) metody . Pokud přepíšete Equals(Object), vaše přepsaná implementace se volá také 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 se zajistí, že všechny testy rovnosti budou vracet konzistentní výsledky.

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

Pro typ hodnoty byste měli vždy implementovat IEquatable<T> a přepsat Equals(Object) , aby se zlepšil výkon. Equals(Object) pole hodnotové typy a spoléhá na reflexi při porovnání dvou hodnot z hlediska rovnosti. Implementace Equals(T) i přepsání Equals(Object) by měly vracet konzistentní výsledky.

Pokud implementujete IEquatable<T>, měli byste také implementovat IComparable<T> , jestli se instance vašeho typu dají řadit nebo řadit. Pokud váš typ implementuje IComparable<T>, téměř vždy také implementujete IEquatable<T>.

Všimněte si, že existují návrhy, ve kterých typ podporuje relaci pořadí, ale rovnost se může lišit od relace řazení. Person Představte si třídu, ve které řadíte abecedně. Dvě osoby se stejným jménem se řadí stejně, ale nejsou to stejná osoba.

Metody

Equals(T)

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

Platí pro

Viz také