Il primo operando in un'espressione 'If' binaria deve essere nullable o un tipo riferimento

Aggiornamento: novembre 2007

First operand in a binary 'If' expression must be nullable or a reference type

Un'espressione If può accettare due o tre argomenti. Quando si inviano solo due argomenti, il primo argomento deve essere un tipo di riferimento o un tipo nullable. Se il primo argomento restituisce un valore diverso da Nothing, verrà restituito il relativo valore. Se il primo argomento restituisce Nothing, verrà restituito il secondo argomento.

Nel codice seguente, ad esempio, sono contenute due espressioni If, una con tre argomenti e una con due argomenti. Le espressioni calcolano e restituiscono lo stesso valore.

' 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))

Le espressioni seguenti causano questo errore:

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 errore: BC33107

Per correggere l'errore

  • Se non è possibile modificare il codice in modo che il primo argomento sia un tipo nullable o un tipo di riferimento, eseguire la conversione in un'espressione If con tre argomenti o in un'istruzione If...Then...Else.

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

Vedere anche

Concetti

Tipi di valori nullable

Riferimenti

Operatore If

Istruzione If...Then...Else (Visual Basic)