Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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."))