代码之家  ›  专栏  ›  技术社区  ›  David G

.NET是否等效于内部类型数组的java.util.Arrays.hashCode()函数?

  •  0
  • David G  · 技术社区  · 17 年前

    是否有相当于的.NET实用程序类 java.util.Arrays.hashCode()

    3 回复  |  直到 17 年前
        1
  •  2
  •   Greg Beech    17 年前

    在.NET 4.0中,阵列将通过 IStructuralEquatable 接口,但在此之前,恐怕你必须自己做。

        2
  •  1
  •   Jon Skeet    17 年前

        3
  •  0
  •   Matt Howells    17 年前

    我不知道在3.5版之前的.Net中会内置这样的东西,尽管.NET4很可能通过 IStructuralEquatable 接口哪个 Array

    下面是一个使用IEnumerable上的扩展方法的简单实现。

    int HashContents<T>(this IEnumerable<T> enumerable)
    {
        int hash = 0x218A9B2C;
        foreach (var item in enumerable)
        {
            int thisHash = item.GetHashCode();
            //mix up the bits.
            hash = thisHash ^ ((hash << 5) + hash);
        }
        return hash;
    }
    

    这将给出不同的哈希代码 {0,0} 和 {0,0,0} .