8

==and!=演算子をオーバーロードするクラスを実装しました。

これはうまくいくようです。ただし、警告が表示され'type' defines operator == or operator != but does not override Object.Equals(object o)ます。

さて、私はEqualsを実装しました。しかし今、私は警告を受けます'type' defines operator == or operator != but does not override Object.GetHashCode()

これはある時点で終了しますか?それとも、過負荷になりたいという理由だけで、終わりのない要件の軌跡に迷い込んだことが==あり!=ますか?

4

2 に答える 2

11

これはある時点で終了しますか?

はい、実装GetHashCodeすると終了します。EricLippertその重要性についてブログに書いています。私にできることは、彼を読んで信頼することを提案することだけです:-)

于 2011-07-25T21:57:33.050 に答える
1

はい、オーバーライドすると終了しますGetHashCode

等式演算子を実装する場合、さらにEquals、そのタイプのカスタムハッシュコードを提供するための実装を提供するのはプログラマーの責任です。

詳細については、このMSDNリファレンスを参照してください。

于 2011-07-25T21:58:53.113 に答える