IEquatable<T> Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
, LastIndexOf
a 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. |