Le premier opérande d'une expression binaire 'If' doit être de type nullable ou référence
Mise à jour : novembre 2007
First operand in a binary 'If' expression must be nullable or a reference type
Une expression If peut accepter soit deux soit trois arguments. Lorsque vous envoyez uniquement deux arguments, le premier argument doit être un type référence ou un type nullable. Si le premier argument est évalué à une valeur autre que Nothing, sa valeur est retournée. Si le premier argument est évalué à la valeur Nothing, la valeur du deuxième argument est évaluée et retournée.
Par exemple, le code suivant contient deux expressions If, l'une avec trois arguments et l'autre avec deux arguments. Les expressions sont calculées et retournent la même valeur.
' 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))
Les expressions suivantes provoquent cette erreur :
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 d'erreur : BC33107
Pour corriger cette erreur
Si vous ne pouvez pas modifier le code afin que le premier argument soit un type nullable ou un type référence, envisagez la conversion en une expression If à trois arguments, ou en une instruction If...Then...Else.
Console.WriteLine(If(choice1 < choice2, 1, 2)) Console.WriteLine(If(booleanVar, "Test returns True.", "Test returns False."))