dポイントプレゼントキャンペーン実施中!

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

A 回答 (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 型は、何でも入れる(ボクシング)ことができますが、
使うときには、それぞれの型に明示的にキャスト(アンボクシング)する必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/17 19:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!