Naw*_*waz 8 c# linq ienumerable iequalitycomparer
命名空间中的IEqualityComparerSystem.Collections.Generic具有以下方法:
bool Equals(T x, T y);
int GetHashCode(T obj);
Run Code Online (Sandbox Code Playgroud)
由于此接口用于检查对象的相等性,因此第一种方法Equals是有意义的.但为什么我们也需要实施GetHashCode呢?为什么它首先存在于界面中?什么时候需要,为什么?
我在命名空间中使用它和Enumerable.Distinct()方法System.Linq,我很惊讶地发现它甚至GetHashCode()被调用了Equals().为什么?Distinct工作怎么样?
有关如何Distinct工作(或至少是一个简单的示例实现)的详细信息,请参阅我的Edulinq博客文章(旧版 - 404).
简单地说,对应于适当的相等比较的哈希码使得创建一组项目更便宜.这是一个有用的很多的情况下-比如Distinct,Except,Intersect,Union,Join,GroupJoin,GroupBy,ToLookup等.
| 归档时间: |
|
| 查看次数: |
2014 次 |
| 最近记录: |