2007年8月10日金曜日

Object.Equalsメソッド

未だにはっきりとした動作がつかめていないメソッドの一つ。

多分クラスによって動作が異なるんだとは思うんだけど、「同じ値かどうか」を求めるメソッドではないのは確かだと思われ。ヘルプによるとこんな記述が。

組み込みの値型の場合、等値演算子 (==) ではオペランドの値が等しい場合に true が返され、それ以外の場合は false が返されます。string 以外の参照型の場合、== では 2 つのオペランドが同じオブジェクトを参照する場合に true が返されます。string 型の場合は、== は文字列の値を比較します。

一般的なクラスの場合だと、「同じオブジェクト(インスタンス)かどうか」という動作であって、Stringや値型は「同じ値かどうか」という動作になるってことだそうだ。

これを見ていて思ったのは「データクラスでEqualsメソッドをオーバーライドなりして実装するとして、内部的にはやっぱり「各フィールドの値が同一か」という聞き方になっていると楽かなぁ、なんて思った。
・・・使う場面がどれほどあるかはわからないけど。

0 件のコメント:

コメントを投稿