Der erste Operand in einem binären 'If'-Ausdruck muss ein Typ, der NULL-Werte zulässt, oder ein Referenztyp sein

Aktualisiert: November 2007

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

Ein If-Ausdruck kann entweder zwei oder drei Argumente verarbeiten. Wenn Sie nur zwei Argumente verwenden, muss das erste Argument ein Referenztyp oder ein Typ sein, der NULL-Werte zulässt. Wenn die Auswertung des ersten Arguments etwas anderes als Nothing ergibt, wird der Wert zurückgegeben. Wenn die Auswertung des ersten Arguments Nothing ergibt, wird das zweite Argument ausgewertet und zurückgegeben.

Der folgende Code enthält beispielsweise zwei If-Ausdrücke, einen mit drei und einen mit zwei Argumenten. Von beiden Ausdrücken wird der gleiche Wert berechnet und zurückgegeben.

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

Dieser Fehler wird durch die folgenden Ausdrücke verursacht:

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

Fehler-ID: BC33107

So beheben Sie diesen Fehler

  • Wenn Sie den Code nicht so ändern können, dass das erste Argument ein Referenztyp oder ein Typ ist, der NULL-Werte zulässt, ziehen Sie die Umwandlung in einen If-Ausdruck mit drei Argumenten oder in eine If...Then...Else-Anweisung in Betracht.

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

Siehe auch

Konzepte

Auf NULL festlegbare Werttypen

Referenz

Operator If

If...Then...Else-Anweisung (Visual Basic)