.Equals,IComparable和IComparer之间的区别

Lea*_*ner -1 .net c#

有人可以用例子解释我能理解.Equals,IComparable和IComparer之间的区别.

我在接受采访时被问到这个问题.

Tud*_*dor 8

首先,从表面上看,Equals是一种方法(存在于每个对象中),IComparable而且IComparer是接口.

Equals存在于任何类中,并且可以重写以根据类的上下文提供相等性测试(这也是一种很好的覆盖GetHashCode方法).默认情况下,它只测试对象在内存中是否相等,这不是很有用.Equals(和GetHashCode)通常在搜索或散列的上下文中给出不同的实现.

实现IComparable是一种更细粒度的比较方式,因为它提供的CompareTo方法是大于/小于比较,而不是Equals简单的等同或不比较.例如,二叉搜索树结构可以从该方法中受益.

IComparer类似于IComparable,除了它从外面工作.它允许您定义一个"中性"对象,用于比较另外两个对象而无需直接修改它们,您需要这样做IComparable.