对于那些接收 as 参数的扩展方法,我可以通过从 a创建一个的方法Comparer.CreateIComparer
轻松获取相应的实例。IComparer<T>
Comparison<T>
同样,最好有一个对应的 interface 委托IEqualityComparer
。为什么它不存在?
对于那些接收 as 参数的扩展方法,我可以通过从 a创建一个的方法Comparer.CreateIComparer
轻松获取相应的实例。IComparer<T>
Comparison<T>
同样,最好有一个对应的 interface 委托IEqualityComparer
。为什么它不存在?
相等的一般约定是它的行为方式必须与相同的哈希码方法一致:相等表示相等的两个对象必须报告相同的哈希值。因此,您无法通过独特的方法提供一致的相等实现。相反,您需要一个包含两种方法(等于和哈希码)的合约,因此委托不足以指定该合约,您需要一个接口,例如IEqualityComparer
包含两个方法。
您可以在以下答案中找到更多原因,该答案以该Distinct
方法为例。