O primeiro operando em uma expressão 'If' binária deve ser anulável ou um tipo de referência
Uma expressão If pode receber ou dois ou três argumentos.Quando você envia somente dois argumentos, o primeiro argumento deve ser um tipo de referência ou um tipo que permite valor nulo.Se o primeiro argumento for avaliado como algo diferente de Nothing, seu valor será retornado.Se o primeiro argumento é avaliado como Nothing, o segundo argumento é avaliado e retornado.
Por exemplo, o código a seguir contém duas expressões If uma com três argumentos e outra com dois argumentos.As expressões calculam e retornam o mesmo valor.
' 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))
As expressões a seguir causar este erro:
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."))
ID de erro: BC33107
Para corrigir este erro
Se você não pode alterar o código para que o primeiro argumento é um tipo que permite valor nulo ou um tipo de referência, considere a possibilidade de converter para um argumento de três If expressão, ou para um If...Then...Else demonstrativo.
Console.WriteLine(If(choice1 < choice2, 1, 2)) Console.WriteLine(If(booleanVar, "Test returns True.", "Test returns False."))