正确实现GetHashCode

这个问题在这里已经有了答案:

  • 什么是重写的System.Object.GetHashCode的最佳算法? 17个答案

  • 假设你的课堂是这样的:

    class Frob {
        public string Foo { get; set; }
        public int Bar { get; set; }
        public double FooBar { get; set; }
    }
    

    比方说,你定义等于让两个实例Frob都是平等的,如果他们的Foo和他们的Bar是相等的,但FooBar无所谓。

    然后你应该用FooBar来定义GetHashCode 。 一种方式是这样的:

    return this.Foo.GetHashCode() * 17 + this.Bar.GetHashCode();
    

    基本上,你只是想要纳入所有定义平等的领域。 一种方法是像我一样继续积累和增加17。 它速度很快,很简单,它是正确的,并且它通常能够提供良好的分布。

    链接地址: http://www.djcxy.com/p/39751.html

    上一篇: Implementing GetHashCode correctly

    下一篇: Overriding GetHashCode