IEquatable<T> Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет обобщенный метод, который реализуется типом значения или классом для создания метода с целью определения экземпляров.
generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of T)
Параметры типа
- T
Тип объектов для сравнения.
- Производный
Примеры
См. пример IEquatable<T>.Equals метода.
Комментарии
Этот интерфейс реализуется типами, значения которых можно приравнять (например, числовые и строковые классы). Тип значения или класс реализует Equals метод для создания метода, подходящего для определения равенства экземпляров.
Примечание
Интерфейс IComparable<T> определяет метод, который определяет CompareTo порядок сортировки экземпляров реализующего типа. Интерфейс IEquatable<T> определяет Equals метод, который определяет равенство экземпляров реализующего типа.
Интерфейс IEquatable<T> используется универсальными объектами коллекции, такими как Dictionary<TKey,TValue>, List<T>и LinkedList<T> при тестировании на равенство в таких методах, как Contains
, IndexOf
и LastIndexOf``Remove
. Она должна быть реализована для любого объекта, который может храниться в универсальной коллекции.
Примечания для тех, кто реализует этот метод
Замените параметр IEquatable<T> типа интерфейса типом, реализующим этот интерфейс.
При реализации IEquatable<T>следует также переопределить реализации Equals(Object) базового класса, GetHashCode() чтобы их поведение соответствовало Equals(T) его поведению. При переопределении Equals(Object)реализация переопределения также вызывается в вызовах статического Equals(System.Object, System.Object)
метода класса. Кроме того, следует перегружать op_Equality
операторы и op_Inequality
операторы. Это гарантирует, что все тесты на равенство возвращают согласованные результаты.
Сведения о переопределении Equals(Object)см. в разделе Equals(Object).
Для типа значения следует всегда реализовывать IEquatable<T> и переопределять Equals(Object) для повышения производительности. Equals(Object) поля типы значений и используют отражение для сравнения двух значений для равенства. Equals(T) Реализация и переопределение Equals(Object) должны возвращать согласованные результаты.
При реализации IEquatable<T>следует также реализовать IComparable<T> , если экземпляры типа можно упорядочить или отсортировать. Если тип реализуется IComparable<T>, вы почти всегда реализуете IEquatable<T>.
Обратите внимание, что существуют некоторые конструкции, в которых тип поддерживает отношение порядка, но равенство может отличаться от отношения упорядочения. Рассмотрим Person
класс, в котором выполняется сортировка по алфавиту. Два человека с одинаковым именем сортируют один и тот же, но не один и тот же человек.
Методы
Equals(T) |
Указывает, равен ли текущий объект другому объекту того же типа. |