バイナリ 'If' 式の最初のオペランドは Null 許容または参照型である必要があります

更新 : 2007 年 11 月

If 式は、2 つまたは 3 つの引数を受け取ることができます。2 つの引数を送る場合は、最初の引数が参照型または Null 許容型である必要があります。1 番目の引数が Nothing 以外であると評価されると、その値が返されます。1 番目の引数が Nothing と評価されると、2 番目の引数が評価され、その値が返されます。

たとえば、次のコード例には、2 つの If 式が含まれています。1 つ目の式には 3 つの引数が使用され、次の式には 2 つの引数が使用されています。この式は、計算後、同じ値を返します。

' firstChoice is a nullable value type.
Dim firstChoice? As Integer = Nothing
Dim secondChoice As Integer = 1128
' If expression with three arguments.
Console.WriteLine(If(firstChoice IsNot Nothing, firstChoice, secondChoice))
' If expression with two arguments.
Console.WriteLine(If(firstChoice, secondChoice))

次の式はエラーになります。

Dim choice1 = 4
Dim choice2 = 5
Dim booleanVar = True

' Not valid.
'Console.WriteLine(If(choice1 < choice2, 1))
' Not valid.
'Console.WriteLine(If(booleanVar, "Test returns True."))

Error ID: BC33107

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

  • 最初の引数を Null 許容型または参照型になるようにコードを変更できない場合、3 つの引数を持つ If 式か If...Then...Else ステートメントに変換します。

    Console.WriteLine(If(choice1 < choice2, 1, 2))
    Console.WriteLine(If(booleanVar, "Test returns True.", "Test returns False."))
    

参照

概念

null 許容値型

参照

If 演算子

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