二元“If”表达式中的第一个操作数必须是可以为 null 的类型或引用类型

更新:2007 年 11 月

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

**错误 ID:**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)