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