正确实现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