• 締切済み

オブジェクト型の変数同士の値の等価比較方法

VB.NETにおいて、オブジェクト型の変数同士の値が同じかどうかチェックする方法を教えてください。 Dim a As Object = 1.0 Dim b As Object = DBNull.Value ・・・ If a = b Then ' 同じ Else ' 違う EndIf 上記のようなことをしたいのですがエラーになります。よろしくお願いします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

どのようなコトしたいのか、いまひとつわからないために適切な回答ではないかもしれませんが・ とりあえず Dim a As Object = 1.0 Dim b As Object = DBNull.Value If a.Equals(b) Then Console.write("等しい") Else Console.write("等しくない") End If のように書くことはできます。 質問文のようにしたらエラーになるのは、 型の違うもの同士を等値判定しようとして、それぞれの型にキャスト(変換)をしようとするが、キャストできないので、エラーになります。 通常、オブジェクトの等値については、それぞれのオブジェクトで判定するメソッドをオーバーライドしたり、キャストについて定義しておく必要があります。 また、型が違えば、等値かどうかというのは、大抵の場合無意味です。 Object 型は、何でも入れる(ボクシング)ことができますが、 使うときには、それぞれの型に明示的にキャスト(アンボクシング)する必要があります。

pokopokoponta
質問者

お礼

有難うございます。 Equalsで比較するようにしました。

関連するQ&A