布尔表达式 (Visual Basic)
布尔表达式是计算结果为布尔数据类型值的表达式:True
或 False
。 Boolean
表达式可以有几种形式。 最简单的是 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
比较运算符
比较运算符(如 =
、<
、>
、<>
、<=
, 和 >=
)通过将运算符左侧的表达式与运算符右侧表达式进行比较,将结果计算为 True
或 False
来生成布尔表达式。 下面的示例对此进行了演示。
42 < 81
由于 42 小于 81,因此上述示例中的布尔表达式计算结果为 True
。 有关此类表达式的详细信息,请参阅值比较。
与逻辑运算符结合使用的比较运算符
可使用逻辑运算符结合比较表达式,以生成更复杂的布尔表达式。 以下示例演示如何将比较运算符与逻辑运算符结合使用。
x > y And x < 1000
在上例中,整体表达式的值取决于 And
运算符每一侧表达式的值。 如果两个表达式都是 True
,则整个表达式的计算结果为 True
。 如果任一表达式为 False
,则整个表达式计算结果为 False
。
短路运算符
逻辑运算符 AndAlso
和 OrElse
表现出被称为“短路”的行为。 短路运算符首先计算左操作数。 如果左操作数确定整个表达式的值,则程序执行将继续,不会再计算右侧表达式。 下面的示例对此进行了演示。
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
,则将继续执行下一行代码,而不再计算右侧表达式,因为左侧表达式已经验证了整个表达式。
与非短路运算符的比较
相反,使用逻辑运算符 And
和 Or
时,逻辑运算符的两侧都将计算。 下面的示例对此进行了演示。
If 45 < 12 And testFunction(3) = 81 Then
' Add code to continue execution.
End If
即使左侧表达式的计算结果为 False
,前述示例也将调用 testFunction()
。
括号表达式
可以使用括号来控制布尔表达式的计算顺序。 首先计算用括号括住的表达式。 对于多级嵌套,最深嵌套的表达式拥有最高优先级。 在括号内,根据运算符优先级规则继续进行计算。 有关详细信息,请参阅 Visual Basic 中的运算符优先级。