バイナリ '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."))