【发布时间】:2011-07-30 02:18:27
【问题描述】:
我为我的一个班级重写了 Equals 方法。在该方法中,我检查每对字典与另一个实例的字典的相等性,如下所示
public override bool Equals (object obj)
{
...
// compare to make sure all <key, value> pair of this.dict have
// the match in obj.dict
...
}
现在,我需要重写 GetHashCode 方法以及建议的方法。
我是否需要对字典的所有键或键加值都这样做?
基本上,以下是好事还是矫枉过正?
public override int GetHashCode ()
{
int iHash = 0;
foreach (KeyValuePair<string, T> pair in this.dict)
{
iHash ^= pair.Key.GetHashCode();
iHash ^= pair.Value.GetHashCode();
}
return iHash;
}
【问题讨论】:
-
你想生成哈希码是为了什么?这是您创建的自定义类吗?或者您是否将 IEqualityComparer 传递给现有字典?
-
是的,这是在我创建的自定义类中。
标签: c# dictionary gethashcode