クラスの1つで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;
}