IEquatable<T> Rozhraní

Definice

Definuje zobecněnou metodu, kterou implementuje typ hodnoty nebo třída pro 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 typy, jejichž hodnoty mohou být sečteny (například číselné a řetězcové třídy). Typ hodnoty nebo třída implementuje metodu pro vytvoření metody specifické pro typ vhodné k určení Equals rovnosti instancí.

Poznámka

Rozhraní IComparable<T> definuje CompareTo metodu , která určuje pořadí řazení instancí implementující typ. Rozhraní IEquatable<T> definuje Equals metodu , která určuje rovnost instancí implementující typ.

Rozhraní je používáno obecnými objekty kolekce, jako jsou , a při testování rovnosti v takových IEquatable<T> Dictionary<TKey,TValue> List<T> LinkedList<T> metodách, jako Contains jsou , , a IndexOf LastIndexOf Remove . Měla by být implementována pro libovolný objekt, který může být uložen v obecné kolekci.

Poznámky pro implementátory

Parametr type rozhraní nahraďte IEquatable<T> typem, který toto rozhraní provádí.

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

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

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

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

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

Metody

Equals(T)

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

Platí pro

Viz také