正确实现GetHashCode
这个问题在这里已经有了答案:
假设你的课堂是这样的:
class Frob {
public string Foo { get; set; }
public int Bar { get; set; }
public double FooBar { get; set; }
}
比方说,你定义等于让两个实例Frob
都是平等的,如果他们的Foo
和他们的Bar
是相等的,但FooBar
无所谓。
然后你应该用Foo
和Bar
来定义GetHashCode
。 一种方式是这样的:
return this.Foo.GetHashCode() * 17 + this.Bar.GetHashCode();
基本上,你只是想要纳入所有定义平等的领域。 一种方法是像我一样继续积累和增加17。 它速度很快,很简单,它是正确的,并且它通常能够提供良好的分布。
链接地址: http://www.djcxy.com/p/39751.html