Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


IEquatable<T> Interfejs

Definicja

Definiuje uogólnioną metodę implementowaną przez typ wartości lub klasę w celu utworzenia metody specyficznej dla typu w celu określenia równości wystąpień.

C#
public interface IEquatable<T>

Parametry typu

T

Typ obiektów do porównania.

Pochodne

Przykłady

Zobacz przykład metody IEquatable<T>.Equals.

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 Dictionary<TKey,TValue>, List<T>i LinkedList<T> podczas testowania równości w takich metodach jak 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) i GetHashCode(), aby ich zachowanie było zgodne z metodą Equals(T). Jeśli zastąpisz 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 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) typy wartości pól i opiera się na odbiciu, aby porównać dwie wartości pod kątem równości. Zarówno implementacja Equals(T), jak i zastąpienie Equals(Object) powinny zwracać spójne wyniki.

Jeśli zaimplementujesz IEquatable<T>, należy również zaimplementować IComparable<T>, jeśli wystąpienia typu mogą być uporządkowane lub sortowane. 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ę 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

Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Zobacz też