布尔表达式 (Visual Basic)

布尔表达式是计算结果为布尔数据类型值的表达式:TrueFalseBoolean 表达式可以有几种形式。 最简单的是 Boolean 变量值与 Boolean 串值的直接比较,如以下示例所示。

If newCustomer = True Then
    ' Insert code to execute if newCustomer = True.
Else
    ' Insert code to execute if newCustomer = False.
End If

= 运算符的两个含义

请注意,赋值语句 newCustomer = True 看起来与上一示例中的表达式相同,但它执行不同的函数,并且使用方式不同。 在上一示例中,表达式 newCustomer = True 表示布尔值,将 = 符号解释为比较运算符。 在独立语句中,将 = 符号解释为赋值运算符,并将右侧的值分配给左侧的变量。 下面的示例对此进行了演示。

If newCustomer = True Then
    newCustomer = False
End If

有关详细信息,请参阅值比较语句

比较运算符

比较运算符(如 =<><><=, 和 >=)通过将运算符左侧的表达式与运算符右侧表达式进行比较,将结果计算为 TrueFalse 来生成布尔表达式。 下面的示例对此进行了演示。

42 < 81

由于 42 小于 81,因此上述示例中的布尔表达式计算结果为 True。 有关此类表达式的详细信息,请参阅值比较

与逻辑运算符结合使用的比较运算符

可使用逻辑运算符结合比较表达式,以生成更复杂的布尔表达式。 以下示例演示如何将比较运算符与逻辑运算符结合使用。

x > y And x < 1000

在上例中,整体表达式的值取决于 And 运算符每一侧表达式的值。 如果两个表达式都是 True,则整个表达式的计算结果为 True。 如果任一表达式为 False,则整个表达式计算结果为 False

短路运算符

逻辑运算符 AndAlsoOrElse 表现出被称为“短路”的行为。 短路运算符首先计算左操作数。 如果左操作数确定整个表达式的值,则程序执行将继续,不会再计算右侧表达式。 下面的示例对此进行了演示。

If 45 < 12 AndAlso testFunction(3) = 81 Then
    ' Add code to continue execution.
End If

在上一示例中,运算符计算左侧表达式,45 < 12。 由于左侧表达式的计算结果为 False,因此整个逻辑表达式的计算结果必为 False。 因此,程序执行会跳过 If 块内代码的执行,而不再计算右侧表达式,testFunction(3)。 此示例不调用 testFunction(),因为左侧表达式使整个表达式值为 false。

同样,如果使用 OrElse 的逻辑表达式中的左侧表达式计算结果为 True,则将继续执行下一行代码,而不再计算右侧表达式,因为左侧表达式已经验证了整个表达式。

与非短路运算符的比较

相反,使用逻辑运算符 AndOr 时,逻辑运算符的两侧都将计算。 下面的示例对此进行了演示。

If 45 < 12 And testFunction(3) = 81 Then
    ' Add code to continue execution.
End If

即使左侧表达式的计算结果为 False,前述示例也将调用 testFunction()

括号表达式

可以使用括号来控制布尔表达式的计算顺序。 首先计算用括号括住的表达式。 对于多级嵌套,最深嵌套的表达式拥有最高优先级。 在括号内,根据运算符优先级规则继续进行计算。 有关详细信息,请参阅 Visual Basic 中的运算符优先级

另请参阅