IEquatable<T> IEquatable<T> IEquatable<T> IEquatable<T> Interface

Definicja

Definiuje uogólnioną metodę, która jest implementowana przez typ wartości lub klasy w celu utworzenia metody specyficznej dla określonego typu w celu określenia równości wystąpień.Defines a generalized method that a value type or class implements to create a type-specific method for determining equality of instances.

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.The type of objects to compare.

Pochodne

Przykłady

Zobacz przykład dla IEquatable<T>.Equals metody.See the example for the IEquatable<T>.Equals method.

Uwagi

Ten interfejs jest implementowany przez typy, których wartości mogą być równe (na przykład klasy liczbowe i ciągi).This interface is implemented by types whose values can be equated (for example, the numeric and string classes). Typ wartości lub Klasa implementuje metodę, Equals aby utworzyć metodę specyficzną dla typu odpowiednią do określania równości wystąpień.A value type or class implements the Equals method to create a type-specific method suitable for determining equality of instances.

Uwaga

IComparable<T> InterfejsCompareTo definiuje metodę, która określa kolejność sortowania wystąpień typu implementującego.The IComparable<T> interface defines the CompareTo method, which determines the sort order of instances of the implementing type. IEquatable<T> InterfejsEquals definiuje metodę, która określa równość wystąpień typu implementującego.The IEquatable<T> interface defines the Equals method, which determines the equality of instances of the implementing type.

Contains LastIndexOf LinkedList<T> IndexOf Dictionary<TKey,TValue> List<T>Interfejs jest używany przez obiekty kolekcji generycznej, takie jak, i podczas testowania pod kątem równości w takich metodach jak,, Removei. IEquatable<T>The IEquatable<T> interface is used by generic collection objects such as Dictionary<TKey,TValue>, List<T>, and LinkedList<T> when testing for equality in such methods as Contains, IndexOf, LastIndexOf, and Remove. Należy ją zaimplementować dla każdego obiektu, który może być przechowywany w kolekcji ogólnej.It should be implemented for any object that might be stored in a generic collection.

Uwagi dotyczące implementowania

Zastąp parametr IEquatable<T> Type interfejsu typem implementującym ten interfejs.Replace the type parameter of the IEquatable<T> interface with the type that is implementing this interface. W przypadku zaimplementowania IEquatable<T>należy również przesłonić Equals(Object) implementacje klas podstawowych GetHashCode() i tak, aby Equals(T) ich zachowanie było zgodne z tą metodą.If you implement IEquatable<T>, you should also override the base class implementations of Equals(Object) and GetHashCode() so that their behavior is consistent with that of the Equals(T) method. W przypadku przesłonięcia Equals(Object)przesłonięta implementacja jest również wywoływana w wywołaniach metody Equals(System.Object, System.Object) statycznej klasy.If you do override Equals(Object), your overridden implementation is also called in calls to the static Equals(System.Object, System.Object) method on your class. Ponadto należy przeciążać op_Equality operatory i op_Inequality .In addition, you should overload the op_Equality and op_Inequality operators. Dzięki temu wszystkie testy pod kątem równości zwracają spójne wyniki.This ensures that all tests for equality return consistent results.

Aby uzyskać informacje na Equals(Object)temat przesłaniania Equals(Object) , zobacz artykuł.For information on overriding Equals(Object), see the Equals(Object) article.

Dla typu wartości należy zawsze implementować IEquatable<T> i przesłonić Equals(Object) w celu zwiększenia wydajności.For a value type, you should always implement IEquatable<T> and override Equals(Object) for better performance. Equals(Object)pola typów wartości i opierają się na odbiciu w celu porównania dwóch wartości dla równości.Equals(Object) boxes value types and relies on reflection to compare two values for equality. Zarówno implementacja Equals(T) , jak i Equals(Object) przesłonięcie powinny zwracać spójne wyniki.Both your implementation of Equals(T) and your override of Equals(Object) should return consistent results. W przypadku zaimplementowania IEquatable<T>należy również zaimplementować IComparable<T> , czy wystąpienia typu mogą być uporządkowane lub sortowane.If you implement IEquatable<T>, you should also implement IComparable<T> if instances of your type can be ordered or sorted. Jeśli typ implementuje IComparable<T>, prawie zawsze zaimplementowana jest IEquatable<T>również implementacja.If your type implements IComparable<T>, you almost always also implement IEquatable<T>.

Należy zauważyć, że istnieją projekty, w których typ obsługuje relację zamówienia, ale równość może być odmienne względem relacji kolejności.Note that there are some designs where a type supports an order relation, but equality may be distinct from an ordering relation. Rozważmy `Person` klasę, w której sortujesz alfabetycznie.Consider a `Person` class where you sort alphabetically. Dwie osoby o tej samej nazwie sortują te same, ale nie są tej samej osoby.Two people with the same name sort the same, but are not the same person.

Metody

Equals(T) Equals(T) Equals(T) Equals(T)

Wskazuje, czy bieżący obiekt jest równy innemu obiektowi tego samego typu.Indicates whether the current object is equal to another object of the same type.

Dotyczy

Zobacz też