Поделиться через


Первый операнд в двоичном выражении If должен поддерживать значение NULL или быть ссылочного типа

Обновлен: Ноябрь 2007

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

Выражение If может принимать два или три аргумента. При передаче двух аргументов, первый аргумент должен быть ссылочного типа или поддерживать значение NULL. Если первый аргумент принимает значение, отличное от Nothing, возвращается его значение. Если первый аргумент принимает значение Nothing, то вычисляется и возвращается значение второго аргумента.

Например, следующий код содержит два выражения If, одно с тремя аргументами и другое с двумя. Выражения вычисляют и возвращают одно и то же значение.

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

Следующие выражения вызывают эту ошибку.

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

Идентификатор ошибки: BC33107

Исправление данной ошибки

  • Если не удается изменить код так, чтобы первым аргумент являлся ссылочным типом или поддерживал значение NULL, рассмотрите возможность преобразования к выражению If с тремя аргументами или к оператору If...Then...Else.

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

См. также

Основные понятия

Типы значения Null

Ссылки

Оператор If

Оператор If...Then...Else (Visual Basic)