繁体   English   中英

通用HashSet的GetHashCode方法<T>

[英]GetHashCode method for Generic HashSet<T>

我正在尝试为HashSet编写通用IEqualityComparer,以便当且仅当两个元素匹配时两个集合才相等。

因此,等于将看起来像:

    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的作为参数的对象有关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM