鉴于下面的课 public class Foo { public int FooId { get; set; } public string FooName { get; set; } public override bool Equals(object obj) { Foo fooItem = obj as Foo; return fooItem.FooId == this.FooId; } public override int GetHashCode() { // Which is preferred? return base.GetHashCode(); //return this.FooId.GetHashCode(); } } 我已经重写了Equals方法,因为Foo表示Foo表的一行。 哪个是重写GetHashCode的首选方法? 为什么重写GetHashCode很重要?
一个严格的相等运算符会告诉你两个对象types是否相等。 然而,有没有办法判断两个对象是否相等, 就像 Java中的哈希码值? Stack Overflow问题JavaScript中是否有任何一种hashCode函数? 是类似于这个问题,但需要更多的学术答案。 上面的场景说明了为什么有必要有一个,我想知道是否有任何等效的解决scheme 。
当重写equals和hashCode时,必须考虑哪些问题/陷阱?