IEquatable<T> Интерфейс

Определение

Определяет обобщенный метод, который реализуется типом значения или классом для создания метода с целью определения экземпляров.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)

Параметры типа

T

Тип объектов для сравнения.The type of objects to compare.

Производный

Примеры

См. пример для IEquatable<T>.Equals метода.See the example for the IEquatable<T>.Equals method.

Комментарии

Этот интерфейс реализуется типами, значения которых могут быть эквивалентны (например, числовые и строковые классы).This interface is implemented by types whose values can be equated (for example, the numeric and string classes). Тип значения или класс реализует Equals метод для создания метода, зависящего от типа, который подходит для определения равенства экземпляров.A value type or class implements the Equals method to create a type-specific method suitable for determining equality of instances.

Примечание

IComparable<T> ИнтерфейсCompareTo определяет метод, который определяет порядок сортировки экземпляров реализующего типа.The IComparable<T> interface defines the CompareTo method, which determines the sort order of instances of the implementing type. IEquatable<T> ИнтерфейсEquals определяет метод, который определяет равенство экземпляров реализующего типа.The IEquatable<T> interface defines the Equals method, which determines the equality of instances of the implementing type.

Contains Dictionary<TKey,TValue> LastIndexOf Remove IndexOf LinkedList<T> Интерфейс используется объектами универсальной коллекции, такими как, List<T>, и при проверке на равенство в таких методах, как,, и. 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. Он должен быть реализован для любого объекта, который может храниться в универсальной коллекции.It should be implemented for any object that might be stored in a generic collection.

Примечания для тех, кто реализует этот метод

Замените параметр IEquatable<T> типа интерфейса типом, реализующим этот интерфейс.Replace the type parameter of the IEquatable<T> interface with the type that is implementing this interface. При реализации IEquatable<T>необходимо также переопределить реализации Equals(Object) базового класса и GetHashCode() , чтобы Equals(T) их поведение согласуется с методом.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. При переопределении переопределенная реализация также вызывается в вызовах статического Equals(System.Object, System.Object) метода класса. Equals(Object)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. Кроме того, следует перегружать op_Equality операторы и. op_InequalityIn addition, you should overload the op_Equality and op_Inequality operators. Это гарантирует, что все тесты на равенство возвращали результаты.This ensures that all tests for equality return consistent results.

Дополнительные сведения о переопределении Equals(Object)см. в Equals(Object) статье.For information on overriding Equals(Object), see the Equals(Object) article.

Для типа значения следует всегда реализовывать IEquatable<T> и переопределять Equals(Object) для повышения производительности.For a value type, you should always implement IEquatable<T> and override Equals(Object) for better performance. Equals(Object)типы значений полей и основаны на отражении для сравнения двух значений на равенство.Equals(Object) boxes value types and relies on reflection to compare two values for equality. Реализация Equals(T) иEquals(Object) переопределение должны возвращать последовательные результаты.Both your implementation of Equals(T) and your override of Equals(Object) should return consistent results. Если реализуется IEquatable<T>, следует также реализовать IComparable<T> , если экземпляры типа могут быть упорядочены или отсортированы.If you implement IEquatable<T>, you should also implement IComparable<T> if instances of your type can be ordered or sorted. Если тип реализует IComparable<T>, почти всегда реализуется IEquatable<T>и.If your type implements IComparable<T>, you almost always also implement IEquatable<T>.

Обратите внимание, что существуют некоторые конструкции, в которых тип поддерживает связь заказа, но равенство может отличаться от связи упорядочения.Note that there are some designs where a type supports an order relation, but equality may be distinct from an ordering relation. Рассмотрим класс `Person` , в котором сортируются по алфавиту.Consider a `Person` class where you sort alphabetically. Два человека с одинаковым именем сортируют одно и то же, но не совпадают.Two people with the same name sort the same, but are not the same person.

Методы

Equals(T)

Указывает, равен ли текущий объект другому объекту того же типа.Indicates whether the current object is equal to another object of the same type.

Применяется к

Дополнительно