为什么我们在 IEqualityComparer 中实现 GetHashCode?

NAS*_*SER 4 c# equals iequalitycomparer gethashcode

我想List通过使用IEqualityComparer接口从C# 中获取不同的项目。但我不知道GetHashCode. 我已经实现了GetHashCodeEquals方法。以及如何调用Equals方法从具有用户定义数据类型的列表中获取不同的项目。

Cod*_*aos 5

您可以使用Distinct扩展方法将您的自定义相等比较器传递给它。

你需要的原因GetHashCode()是没有它你需要O(n^2)比较。随着GetHashCode()该项目可分为桶,这导致了O(n)一个良好的散列的实现。

如果项目类型是您自己的,您可以在类型本身中覆盖EqualsGetHashCode,而不是创建一个IEqualityComparer<T>