GetHashCode method for Generic HashSet<T>
本文关键字:lt gt HashSet method for Generic GetHashCode | 更新日期: 2023-09-27 18:30:03
我正试图为HashSet编写一个Generic IEqualityComparer,这样两个集在元素匹配的情况下是相等的。
因此,Equals将看起来像:
public bool Equals(HashSet<T> A, HashSet<T> B)
{
return (A.All(x => B.Contains(x)) && B.All(x => A.Contains(x)));
}
我很难找到一个好的GetHashCode方法。我知道
public int GetHashCode(HashSet<int> obj)
{
return 1;
}
总是一种选择,但我希望有比这更好的选择。有人知道我该怎么做吗?在每个元素上使用ToString,对它们进行排序和连接,并为生成的字符串获取哈希代码,这是个坏主意吗?
IEqualityComparer<T> Interface
抽象了此处所需的一组操作:
Equals
GetHashode
您可以像所有.NET类一样获得默认比较器:使用EqualityComparer<T>.Default Property
但是,据我所知,HashSet<>
具有使用与您调用操作的对象相关联的Comparer
的策略,即使它以另一个HashSet作为参数也是如此。