2

c# には、equals と gethashcode を使用した Java と同じ問題がありますか?

次のような問題: http://onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html

4

2 に答える 2

12

継承に関しては、平等を定義するのが難しいという意味であれば、そうです。

ただし、.NET には、.NETIEqualityComparer<T>などのコンテナーの等価性とハッシュに頻繁に使用されるインターフェイスがありますDictionary<TKey, TValue>。等価/ハッシュを必要とするフレームワークのほとんどすべてで、動作を で指定IEqualityComparer<T>できます。つまり、型自体で指定された形式がニーズに合わない場合は、必要な等価の概念を表現できます。

于 2010-04-16T18:20:24.523 に答える
3

少しあいまいなので、どの問題について話しているのかわかりません...

ただし、 (コンパイラの警告や、コード内で予期しない動作が発生する可能性を望まない場合) をオーバーライドする必要があるという意味であればGetHashCodeオーバーライド時にオーバーライドする必要がありますEquals

于 2010-04-16T18:18:18.693 に答える