【发布时间】:2013-06-09 09:46:05
【问题描述】:
给定人员类:
class person
{
public string name;
public int age;
}
说,我重写了类人的 GetHashCode 方法:
public override int GetHashCode()
{
unchecked
{
hashCode = 17;
// ...some code here...
}
return hashCode;
}
根据 msdn 的指令,我还需要重写 Equality,所以我这样做了:
public override bool Equals(object obj)
{
// ...something like:
return this.name == (person)obj.name && this.age ==(person)obj.age;
}
嘿,等等,我可以得到 person 实例的哈希码,为什么不在 Equals 中使用哈希码呢?喜欢:
public override bool Equals(object obj)
{
return this.GetHashCode() == (person)obj.GetHashCode();
}
我搜索了一下,发现大多数 Equals() 示例与我之前版本的 Equals() 相似,所以,我误解了什么吗?
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
你应该阅读我的文章。搜索 gethashcode 的指南和规则。
-
哇~我搜索并找到了这个link希望这能帮助其他有同样疑问的人:)
标签: c# overriding equals hashcode