我正在尝试为 HashSet 编写一个通用 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,对它们进行排序和连接,并获取结果字符串的哈希码是一个坏主意吗?