2011-08-16 23 views
6

可能性の重複:!
Why must we define both == and != in C#?オーバーロード+ =、+、==、および=演算子

はなぜのみ+の過負荷で+ =可能性の過負荷されているが、==と!=は別々にオーバーロードされていますか?
逆にする必要があるようです。
=新しいオブジェクトにメモリを割り当てる必要がないため、オーバーロードはほぼ常に有効です。しかし、演算子==と!=は、結果Equals()を反転する以外は何か異なるはずの例を作成することはできません。

答えて

7

同様の質問がasked beforeでした。

最も大きな理由は、==!=演算子に過負荷をかけたときにブール値を返す必要がないことです。ブール値を返さない場合は、相補演算子を反転するだけではありません。別々に過負荷がかかる可能性がある他の理由があります。その理由は他の理由でその質問に対する回答を見ることができます。

+=をオーバーロードできない妥当な理由があるため、+演算子を使用して暗黙的に行われます。私はあなたがC#で代入演算子をオーバーライドできないという事実と関係がある。これは言語標準の一部である。 +=はインクリメントとアサインで、後者はC#でオーバーロードできません。

+4

+1あなたが '+'と '+ ='を別々にオーバーロードすることができたら狂気を想像してみてください... –

+0

C#と.netが変更可能な構造の悪いことをしなかった場合(可変構造は悪ではありません - + +演算子を使用すると、+演算子を使用することは意味を持つので、+ =演算子と+演算子を別々に持つことは有益でしょう。 "+ ="はオリジナルを変更できることを意味します。 btwはイベントが "+ ="と " - ="をサポートするが、 "+"と " - "はサポートしないことに注意してください。 – supercat

関連する問題