IEquatable<T> Interfejs
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Definiuje uogólniona metoda implementowana przez typ lub klasę wartości w celu utworzenia metody specyficznej dla typu do określania równości wystąpień.
generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of T)
Parametry typu
- T
Typ obiektów do porównania.
- Pochodne
Przykłady
Zobacz przykład IEquatable<T>.Equals metody .
Uwagi
Ten interfejs jest implementowany przez typy, których wartości mogą być utożsamiane (na przykład klasy liczbowe i ciągowe). Typ wartości lub klasa implementuje Equals metodę, aby utworzyć metodę specyficzną dla typu odpowiednią do określania równości wystąpień.
Uwaga
Interfejs IComparable<T> definiuje metodę CompareTo , która określa kolejność sortowania wystąpień typu implementowania. Interfejs IEquatable<T> definiuje metodę Equals , która określa równość wystąpień typu implementowania.
Interfejs IEquatable<T> jest używany przez ogólne obiekty kolekcji, takie jak , i LinkedList<T> podczas testowania równości w takich metodach jak Contains
Dictionary<TKey,TValue>, List<T>, LastIndexOf
IndexOf
i Remove
. Należy go zaimplementować dla dowolnego obiektu, który może być przechowywany w kolekcji ogólnej.
Uwagi dotyczące implementowania
Zastąp parametr type interfejsu IEquatable<T> typem implementujący ten interfejs.
W przypadku zaimplementowania metody IEquatable<T>należy również zastąpić implementacje klas bazowych Equals(Object) i GetHashCode() tak, aby ich zachowanie było spójne z Equals(T) tą metodą. Jeśli przesłonisz Equals(Object), implementacja zastąpienia jest również wywoływana w wywołaniach metody statycznej Equals(System.Object, System.Object)
w klasie. Ponadto należy przeciążyć operatory op_Equality
i op_Inequality
. Gwarantuje to, że wszystkie testy na potrzeby równości zwracają spójne wyniki.
Aby uzyskać informacje na temat zastępowania Equals(Object), zobacz Equals(Object).
W przypadku typu wartości zawsze należy zaimplementować IEquatable<T> i zastąpić Equals(Object) w celu uzyskania lepszej wydajności. Equals(Object) pola wartości typów i opiera się na odbiciu, aby porównać dwie wartości równości. Zarówno implementacja, jak Equals(T)Equals(Object) i zastąpienie polecenia powinny zwracać spójne wyniki.
W przypadku zaimplementowania IEquatable<T>programu należy również zaimplementować, IComparable<T> czy wystąpienia typu mogą być uporządkowane lub posortowane. Jeśli typ implementuje IComparable<T>, prawie zawsze implementujesz również .IEquatable<T>
Należy pamiętać, że istnieją pewne projekty, w których typ obsługuje relację kolejności, ale równość może być różna od relacji porządkowania. Rozważ klasę, w Person
której sortujesz alfabetycznie. Dwie osoby o tej samej nazwie posortują tę samą osobę, ale nie są tą samą osobą.
Metody
Equals(T) |
Wskazuje, czy bieżący obiekt jest równy innemu obiektowi tego samego typu. |