OrElse 运算符 (Visual Basic)
对两个表达式执行短路逻辑或运算。
语法
result = expression1 OrElse expression2
组成部分
result
必需。 任何 Boolean
表达式。
expression1
必需。 任何 Boolean
表达式。
expression2
必需。 任何 Boolean
表达式。
注解
如果编译的代码可以根据一个表达式的结果绕过另一个表达式的计算,则称逻辑运算为短路。 如果第一个表达式的计算结果决定运算的最终结果,则无需计算第二个表达式,因为这无法改变最终结果。 如果绕过的表达式很复杂,或者涉及过程调用,短路可以提高性能。
如果任一或两个表达式都计算为 True
,则 result
为 True
。 下表说明了如何确定 result
。
如果 expression1 为 |
且 expression2 为 |
result 的值为 |
---|---|---|
True |
(未计算) | True |
False |
True |
True |
False |
False |
False |
数据类型
OrElse
运算符仅适用于布尔数据类型。 计算表达式之前,Visual Basic 根据需要将每个操作数转换为 Boolean
。 如果将结果分配给数值类型,Visual Basic 会将其从 Boolean
转换为该类型,从而 False
变为 0
,True
变为 -1
。
有关详细信息,请参阅布尔类型转换。
重载
可重载 Or 运算符IsTrue 运算符,这意味着当操作数具有某一类或结构时,该类或结构可重新定义其行为。 重载 Or
和 IsTrue
运算符会影响 OrElse
运算符的行为。 如果代码在重载 Or
和 IsTrue
的类或结构上使用 OrElse
,请确保你了解其重新定义的行为。 有关详细信息,请参阅 Operator Procedures。
示例 1
以下示例使用 OrElse
运算符对两个表达式执行逻辑或运算。 结果是一个 Boolean
值,该值表示两个表达式中任一是否为 true。 如果第一个表达式为 True
,则不计算第二个表达式。
Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b OrElse b > c
secondCheck = b > a OrElse b > c
thirdCheck = b > a OrElse c > b
前面的示例分别生成结果 True
、True
和 False
。 计算 firstCheck
时,不计算第二个表达式,因为第一个表达式已为 True
。 而是在计算 secondCheck
时,计算第二个表达式。
示例 2
以下示例显示了包含两个过程调用的 If
...Then
语句。 如果第一次调用返回 True
,则不调用第二个过程。 如果第二个过程执行在这部分代码运行时应始终执行的重要任务,这可能会产生意外结果。
If testFunction(5) = True OrElse otherFunction(4) = True Then
' If testFunction(5) is True, otherFunction(4) is not called.
' Insert code to be executed.
End If