If 运算符 (Visual Basic)

使用短路计算根据条件返回两个值之一。 可以使用三个参数或两个参数调用 If 运算符。

语法

If( [argument1,] argument2, argument3 )

使用三个参数调用的 If 运算符

使用三个参数调用 If 时,第一个参数必须计算为可转换为 Boolean 的值。 该 Boolean 值将决定计算和返回另外两个参数中的哪一个。 以下列表仅在使用三个参数调用 If 运算符时适用。

组成部分

术语 定义
argument1 必需。 Boolean。 决定计算和返回其他参数中的哪一个。
argument2 必需。 Object。 如果 argument1 计算为 True,则计算并返回。
argument3 必需。 Object。 如果 argument1 计算为 Falseargument1 为计算为可为 nullBoolean 变量,则计算并返回。

使用三个参数进行调用的 If 运算符与 IIf 函数在原理上类似,只是前者使用短路计算。 IIf 函数始终计算全部的三个参数,而具有三个参数的 If 运算符仅计算其中两个。 计算第一个 If 参数并将结果强制转换为 Boolean 值、TrueFalse。 如果值为 True,则计算 argument2 并返回其值,但不计算 argument3。 如果 Boolean 表达式的值为 False,则计算 argument3 并返回其值,但不计算 argument2。 以下示例说明了在使用三个参数时如何使用 If

' This statement prints TruePart, because the first argument is true.
Console.WriteLine(If(True, "TruePart", "FalsePart"))

' This statement prints FalsePart, because the first argument is false.
Console.WriteLine(If(False, "TruePart", "FalsePart"))

Dim number = 3
' With number set to 3, this statement prints Positive.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))

number = -1
' With number set to -1, this statement prints Negative.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))

以下示例说明了短路计算的价值。 该示例显示了将变量 number 除以变量 divisor 的两次尝试,且不含 divisor 为零的情况。 在这种情况下,应返回 0,并且不应尝试执行除法,因为会导致运行时错误。 因为 If 表达式使用短路计算,它计算第二个或第三个参数,具体取决于第一个参数的值。 如果第一个参数为 ture,则除数不为零,计算第二个参数并执行除法。 如果第一个参数为 false,则仅计算第三个参数并返回 0。 因此,除数为 0 时,不执行除法,也不会产生错误结果。 但由于 IIf 不使用短路计算,所以即使第一个参数为 false,也会计算第二个参数。 这会导致运行时除以零错误。

number = 12

' When the divisor is not 0, both If and IIf return 4.
Dim divisor = 3
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))

' When the divisor is 0, IIf causes a run-time error, but If does not.
divisor = 0
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
' Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))

使用两个参数调用的 If 运算符

可以省略 If 的第一个参数。 这样,可以仅使用两个参数来调用该运算符。 以下列表仅在使用两个参数调用 If 运算符时适用。

组成部分

术语 定义
argument2 必需。 Object。 必须是引用或可为 null 的值类型。 如果计算为 Nothing 以外的任意值,计算并返回。
argument3 必需。 Object。 如果 argument2 计算为 Nothing,则计算并返回。

省略 Boolean 参数时,第一个参数必须是引用或可为 null 的值类型。 如果第一个参数计算为 Nothing,则返回第二个参数的值。 在所有其他情况下,返回第一个参数的值。 以下示例说明了此计算的原理:

' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6

' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))

second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))

first = Nothing
second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))

另请参阅