我想知道如何为有序列表编写好的 GetHashCode()

I'd like to know how can I write good GetHashCode() for ordered list

我制作了一个包含 List<T> 的 class。(T 是我制作的结构。)我想覆盖 Equals()GetHashCode() .所以我需要从 List<T> 生成 HashCode。如何从有序列表中生成好的 HashCode?

Jon Skeet 提供了一个类似的很好的例子 post:

public override int GetHashCode()
{
    unchecked
    {
        int hash = 19;
        foreach (var foo in foos)
        {
            hash = hash * 31 + foo.GetHashCode();
        }
        return hash;
    }
}

素数在散列时通常非常有用。如果你有兴趣知道为什么,你必须查阅数学,因为人们很可能比我更擅长解释这一点。