Partilhar via


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."))
    

Consulte também

Conceitos

Tipos de Valor Anuláveis.

Referência

Se operador

Declaração If...Then... (Visual Basic)