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

バイナリ 'If' 演算子の 1 番目と 2 番目のオペランドの共通型を推論できません。 一方が他方に対する拡大変換を持つ必要があります。

バイナリ If 演算子では、引数の 1 つともう 1 つの引数の間に拡大変換が必要です。 たとえば、 IntegerStringの間にはどちらの方向にも拡大変換がないため、次のコードでこのエラーが発生します。

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
    

関連項目