IEquatable<T> 接口

定义

定义值类型或类实现的通用方法,以创建特定于类型的方法来确定实例的相等性。

C#
public interface IEquatable<T>

类型参数

T

要比较的对象的类型。

派生

示例

请参阅 IEquatable<T>.Equals 方法的示例。

注解

此接口由其值可以相等的类型实现(例如,数字类和字符串类)。 值类型或类实现 Equals 方法,以创建适合确定实例相等性的特定于类型的方法。

备注

IComparable<T> 接口定义 CompareTo 方法,该方法确定实现类型的实例的排序顺序。 IEquatable<T> 接口定义 Equals 方法,该方法确定实现类型的实例的相等性。

在测试 ContainsIndexOfLastIndexOfRemove等方法时,泛型集合对象(如 Dictionary<TKey,TValue>List<T>LinkedList<T>)使用 IEquatable<T> 接口。 它应该针对可能存储在泛型集合中的任何对象实现。

实施者说明

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)

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

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另请参阅