私のクラスの1つに対してEqualsメソッドをオーバーライドします。以下はDictionaryアイテムのGetHashCode
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;
}
http://stackoverflow.com/questions/371328/why-is-it-important-to-override-gethashcode-when-equals-method-is-overriden-in-c –
http://stackoverflow.com/questions/1378686/general-advice-and-guidelines-on-how-to-override-object-gethashcode –
ハッシュコードを生成しようとしていますか?これはあなたが作成したカスタムクラスですか?または、既存の辞書に何かのIEqualityComparerを渡していますか? –