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>测试等方法(如ContainsIndexOf``LastIndexOfRemove)中的相等性时。 它应该针对可能存储在泛型集合中的任何对象实现。

实施者说明

将接口的类型 IEquatable<T> 参数替换为实现此接口的类型。

如果实现 IEquatable<T>,还应重写其基类实现 Equals(Object)GetHashCode() 使其行为与方法的行为 Equals(T) 一致。 如果确实重写 Equals(Object),则对类上的静态 Equals(System.Object, System.Object) 方法的调用中也会调用重写的实现。 此外,还应重载 op_Equalityop_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)

指示当前对象是否等于同一类型的另一个对象。

适用于

另请参阅