c# には、equals と gethashcode を使用した Java と同じ問題がありますか?
次のような問題: http://onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html
c# には、equals と gethashcode を使用した Java と同じ問題がありますか?
次のような問題: http://onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html
継承に関しては、平等を定義するのが難しいという意味であれば、そうです。
ただし、.NET には、.NETIEqualityComparer<T>
などのコンテナーの等価性とハッシュに頻繁に使用されるインターフェイスがありますDictionary<TKey, TValue>
。等価/ハッシュを必要とするフレームワークのほとんどすべてで、動作を で指定IEqualityComparer<T>
できます。つまり、型自体で指定された形式がニーズに合わない場合は、必要な等価の概念を表現できます。
少しあいまいなので、どの問題について話しているのかわかりません...
ただし、 (コンパイラの警告や、コード内で予期しない動作が発生する可能性を望まない場合) をオーバーライドする必要があるという意味であれば、GetHashCode
オーバーライド時にオーバーライドする必要がありますEquals
。