Udostępnij za pośrednictwem


IEquatable<T> Interfejs

Definicja

Definiuje metodę uogólnioną implementowaną przez typ wartości lub klasę w celu utworzenia metody specyficznej dla typu w celu określenia 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 metodę Equals , 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 , List<T>i LinkedList<T> podczas testowania pod kątem równości w takich metodach jak Dictionary<TKey,TValue>Contains, IndexOf, LastIndexOfi 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 implementacji IEquatable<T>należy również zastąpić implementacje klas bazowych Equals(Object) programu i GetHashCode() tak, aby ich zachowanie było zgodne z zachowaniem Equals(T) metody . Jeśli zastąpisz Equals(Object)metodę , implementacja zastępowana 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 pod kątem równości zwracają spójne wyniki.

Aby uzyskać informacje na temat zastępowania Equals(Object), zobacz Equals(Object).

W przypadku typu wartości należy zawsze implementować IEquatable<T> i zastępować Equals(Object) w celu uzyskania lepszej wydajności. Equals(Object) typy wartości pola i opiera się na odbiciu w celu porównania dwóch wartości pod kątem równości. Zarówno implementacja, jak Equals(T) i zastąpienie Equals(Object) polecenia powinny zwracać spójne wyniki.

Jeśli zaimplementujesz IEquatable<T>usługę , należy również zaimplementować IComparable<T> , czy wystąpienia typu mogą być uporządkowane lub sortowane. Jeśli typ implementuje IComparable<T>wartość , prawie zawsze implementujesz również funkcję 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ę Person , w której sortujesz alfabetycznie. Dwie osoby o tej samej nazwie posortują to samo, ale nie są tą samą osobą.

Metody

Equals(T)

Wskazuje, czy bieżący obiekt jest równy innemu obiektowi tego samego typu.

Dotyczy

Zobacz też