IComparable和IEquatable接口有什么区别?
这两个接口似乎比较对象的平等,所以他们之间的主要区别是什么?
IEquatable
testing两个对象是否相等。
IComparable
对所比较的对象强加一个总的sorting。
例如, IEquatable
会告诉你,5不等于IEquatable
会告诉你,5在7之前。
IEquatable<T>
表示相等。
IComparable<T>
用于sorting。
除了Greg D的回答:
你可能会实现IComparable而不实现IEquatable的类,其中部分sorting是有道理的,你肯定希望消费者绘制推论,因为CompareTo()返回零,这并不意味着对象是相等的除了分类目的)。
正如在IEquatable的MSDN页面所述 :
IComparable接口定义了
CompareTo
方法,该方法确定实现types实例的sorting顺序。 IEquatable接口定义了Equals
方法,它决定了实现types实例的相等性。
Equals
与CompareTo