布尔表达式是一个表达式,计算结果为布尔数据类型的值: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()
,因为左侧表达式会伪造整个表达式。
同样,如果逻辑表达式中使用的左侧表达式OrElse
求值为True
,那么执行将进入下一行代码,而不计算右侧表达式,因为左侧表达式已经验证了整个表达式。
与非Short-Circuiting 运算符的比较
相反,使用逻辑运算符 And
和 Or
时,逻辑运算符的两侧都将计算。 下面的示例对此进行了演示。
If 45 < 12 And testFunction(3) = 81 Then
' Add code to continue execution.
End If
前面的示例调用 testFunction()
,即使左侧表达式的计算结果为 False
。
括号表达式
可以使用括号来控制布尔表达式的计算顺序。 首先计算用括号括住的表达式。 对于多个嵌套级别,最深层嵌套的表达式将会被最优先处理。 在括号内,计算按运算符优先级规则进行。 有关详细信息,请参阅 Visual Basic 中的运算符优先级。