2005年02月23日

== 演算子のオーバーロード

  
== 演算子をオーバーロードしたら、

if ( data == null )

という箇所で、エラーとなりました。ちょっと考えれば、あたり前のことなのですが、一瞬「なぜ」と思ってしまいました。
.NET Framework のドキュメントを読むと、参照型でのオーバーロードはやらないほうが良い、というニュアンスのことが書かれていますし、やはり、参照型に対して、== をオーバーロードしないほうが良いのかな。

確かに、参照型で、== をオーバーロードしてしまうと、同一インスタンスを指しているかを調べられなくなりますからね。

まあ、このクラスは、もともと値型(構造体)の方がふさわしいのですが、Boxing,UnBoxing されるのがイヤだったので、参照型(クラス)で定義しました。
NullObject を導入して、

if ( data is MyNullData )

と書くようにしようかとも思ったのですが、うーーん、やっぱり、== はオーバーロードしないほうが良さそうです。ということで、== をオーバーロードするのは止めました。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/14938508