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 je možné rovnítko (například číselné a řetězcové třídy). Typ hodnoty nebo třída implementuje metodu Equals pro vytvoření metody specifické pro typ vhodné pro určení rovnosti instancí.

Poznámka

IComparable<T> Rozhraní definuje metoduCompareTo, která určuje pořadí řazení instancí implementového typu. Rozhraní IEquatable<T> definuje metodu Equals , která určuje rovnost instancí implementní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 takových metodách, jako Contains, IndexOf, LastIndexOfa Remove. Měla by být implementována pro libovolný objekt, který by mohl být uložen 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, GetHashCode() aby jejich chování bylo konzistentní s metodou Equals(T) . Pokud přepíšete, vaše přepsání Equals(Object)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 operátory. Tím zajistíte, aby všechny testy pro rovnost vrátily konzistentní výsledky.

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

U typu hodnoty byste měli vždy implementovat IEquatable<T> a přepsat Equals(Object) , aby se zlepšil výkon. Equals(Object) Typy hodnot polí a spoléhají na reflexi, aby porovnávaly dvě hodnoty 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é uspořádat nebo řadit instance vašeho typu. Pokud váš typ implementuje IComparable<T>, téměř vždy také 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í. Person Zvažte třídu, ve které seřadíte abecedně. Dva lidé se stejným jménem seřadí stejné, ale nejsou stejní lidé.

Metody

Equals(T)

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

Platí pro

Viz také