バイナリ 'If' 演算子の 1 番目と 2 番目のオペランドの共通型を推論できません

更新 : 2007 年 11 月

エラー メッセージ

バイナリ 'If' 演算子の 1 番目と 2 番目のオペランドの共通型を推論できません。一方の型から他方の型への上位変換が必要です。

バイナリ If 演算子では、引数間に拡大変換が存在している必要があります。たとえば、Integer と String は、どちらの方向でも拡大変換にならないので、このエラーが発生します。

Dim first? As Integer
Dim second As String = "First is Nothing"
'' Not valid.
' Console.WriteLine(If(first, second))

エラー ID: BC33110

このエラーを解決するには

  • 可能であれば、いずれか 1 つのオペランドの明示的な変換をコードの中で記述します。

    Console.WriteLine(If(first, CInt(second))) 
    
  • 別の条件構造を使用してコードを書き直します。

    If first IsNot Nothing Then
        Console.WriteLine(first)
    Else
        Console.WriteLine(second)
    End If
    

参照

概念

拡大変換と縮小変換

参照

If 演算子

If...Then...Else ステートメント (Visual Basic)