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é 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 Contains
jsou , 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> 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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro