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

Odvozené

Příklady

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

Poznámky

Toto rozhraní je implementováno typy, jejichž hodnoty lze rovnítko (například číselné a řetězcové třídy). 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í typu implementace. Rozhraní IEquatable<T> definuje metodu Equals , která určuje rovnost instancí typu implementace.

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 takových metodách, jako Containsjsou , 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> type 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 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 se zajistí, že všechny testy rovnosti vrátí 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) boxy 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 vracet konzistentní výsledky.

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

Všimněte si, že existují některé návrhy, ve kterých typ podporuje relaci pořadí, ale rovnost se může lišit od relace řazení. Představte si Person třídu, ve které seřadíte podle abecedy. Dva lidé 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é