このようなGetHashCode()の実装を見つけました
Guid _hashCode = Guid.NewGuid();
public override int GetHashCode()
{
return _hashCode.GetHashCode();
}
Equalsは正しいように見えますが、この実装によって.NETに関する多くの仮定が破られると言うのは正しいですか?
public override bool Equals(object obj)
{
if (obj.GetType() != trustedEntity.GetType())
return false;
TrustedEntity typedObj = (TrustedEntity)obj;
if (trustedEntity.BackTrustLink != typedObj.BackTrustLink)
return false;
if (trustedEntity.ForwardTrustLink != typedObj.ForwardTrustLink)
return false;
if (trustedEntity.EntryName != typedObj.EntryName)
return false;
return true;
}
私が聞いている反論は、オブジェクトが作成された後はGetHashCodeを変更する必要がないというものです。これは、このオブジェクトが辞書に保存されているためです。
誰かが私のためにこれを片付けて、オブジェクトが変更された場合にGetHashCodeに何が起こる必要があるかを説明できますか?それは最終的にEqualsメソッドを変更しますか?