IEquatable<T> Interfejs
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ó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ń.
generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of T)
- T
Typ obiektów do porównania.
- Pochodne
Zobacz przykład metody IEquatable<T>.Equals.
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
, LastIndexOf
i Remove
. Należy go zaimplementować dla dowolnego obiektu, który może być przechowywany w kolekcji ogólnej.
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ą.
Equals(T) |
Wskazuje, czy bieżący obiekt jest równy innemu obiektowi tego samego typu. |
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 |
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: