OrElse 运算符 (Visual Basic)

对两个表达式执行短路非独占逻辑分离。

语法

result = expression1 OrElse expression2  

部件

result
必填。 任何 Boolean 表达式。

expression1
必填。 任何 Boolean 表达式。

expression2
必填。 任何 Boolean 表达式。

注解

如果编译的代码可以绕过一个表达式的计算,则表示逻辑作会 短路 ,具体取决于另一个表达式的结果。 如果计算的第一个表达式的结果确定作的最终结果,则无需计算第二个表达式,因为它无法更改最终结果。 如果绕过的表达式很复杂,或者涉及到过程调用,则短路可以提高性能。

如果任一表达式或两个表达式的计算结果TrueresultTrue。 下表说明了如何 result 确定。

如果 expression1 expression2 值为result
True (未评估) True
False True True
False False False

数据类型

OrElse布尔数据类型定义运算符。 Visual Basic 在计算表达式之前根据需要 Boolean 将每个作数转换为。 如果将结果分配给数值类型,Visual Basic 会将结果从 Boolean 该类型转换为该类型,以便 False 变为 0True 变为 -1该类型。 有关详细信息,请参阅 布尔类型转换

重载

Or 运算符IsTrue 运算符可以重载,这意味着当作数的类型为该类或结构时,类或结构可以重新定义其行为。 重 Or 载和 IsTrue 运算符会影响运算符的行为 OrElse 。 如果代码在OrElse重载OrIsTrue的类或结构上使用,请确保你了解其重新定义的行为。 有关详细信息,请参阅 运算符过程

示例 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

前面的示例分别生成结果和False结果TrueTrue。 在计算 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

另请参阅