そのようなクラスがあるとしましょう:
class MyClass
{
public string SomeValue { get; set; }
// ...
}
ここで、プロパティがMyClass
等しい場合、2 つのインスタンスが等しいとしましょう。したがって、それを表すメソッドとSomeValue
を上書きします。を返しますが、同時に次のルールに従う必要があります。Object.Equals()
Object.GetHashCode()
Object.GetHashCode()
SomeValue.GetHashCode()
- オブジェクトの 2 つのインスタンスが等しい場合、それらは同じハッシュ コードを返す必要があります。
- ハッシュ コードは、ランタイム全体で変更しないでください。
しかし、どうやらSomeValue
変更される可能性があり、以前に取得したハッシュ コードが無効になる可能性があります。
クラスを不変にすることしか考えられませんが、この場合他の人が何をしているのか知りたいです。
そのような場合はどうしますか?そのようなクラスを持つことは、設計上の決定における微妙な問題を表していますか?