Freigeben über


BC33107: Der erste Operand in einem binären If-Ausdruck muss ein Typ, der Nullwerte zulässt, oder ein Referenztyp sein

Ein If-Ausdruck kann zwei oder drei Argumente annehmen. Wenn Sie nur zwei Argumente senden, muss das erste Argument ein Verweistyp oder ein auf NULL festlegbarer Werttyp sein. Wenn das erste Argument als ein anderer Wert als Nothing ausgewertet wird, wird sein Wert zurückgegeben. Wird das erste Argument als Nothing ausgewertet, wird der Wert des zweiten Arguments zurückgegeben.

Der folgende Code enthält beispielsweise zwei If-Ausdrücke – einen mit drei Argumenten und einen mit zwei Argumenten. Die Ausdrücke berechnen und geben den gleichen Wert zurück.

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

Die folgenden Ausdrücke verursachen diesen Fehler:

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 auf NULL festlegbarer-Werttyp oder Verweistyp ist, ziehen Sie eine Konvertierung 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