IEquatable<T> 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义值类型或类实现的通用方法,以创建特定于类型的方法来确定实例的相等性。
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 方法,该方法确定实现类型的实例的相等性。
在测试 Contains
、IndexOf
、LastIndexOf
和 Remove
等方法时,泛型集合对象(如 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_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) |
指示当前对象是否等于同一类型的另一个对象。 |