AndAlso 运算符 (Visual Basic)

对两个表达式执行短路逻辑连线。

语法

result = expression1 AndAlso expression2  

部件

术语 定义
result 必填。 任何 Boolean 表达式。 结果是 Boolean 两个表达式的比较结果。
expression1 必填。 任何 Boolean 表达式。
expression2 必填。 任何 Boolean 表达式。

注解

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

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

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

注释

在布尔比较中, And 运算符始终计算这两个表达式,其中包括进行过程调用。 AndAlso 运算符执行短路,这意味着如果是expression1Falseexpression2则不计算。

数据类型

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

重载

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

示例 1

以下示例使用 AndAlso 运算符对两个表达式执行逻辑组合。 结果是一个 Boolean 值,该值表示整个串联表达式是否为 true。 如果第一个表达式是 False,则不计算第二个表达式。

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b AndAlso b > c
secondCheck = b > a AndAlso b > c
thirdCheck = a > b AndAlso c > b

前面的示例分别生成结果TrueFalseFalse结果。 在计算 secondCheck中,不计算第二个表达式,因为第一个表达式已经 False。 但是,第二个表达式在计算 thirdCheck中计算 。

示例 2

以下示例演示了在 Function 数组元素中搜索给定值的过程。 如果数组为空,或者超出数组长度,则 While 语句不会针对搜索值测试数组元素。

Public Function findValue(ByVal arr() As Double, 
    ByVal searchValue As Double) As Double
    Dim i As Integer = 0
    While i <= UBound(arr) AndAlso arr(i) <> searchValue
        ' If i is greater than UBound(arr), searchValue is not checked.
        i += 1
    End While
    If i > UBound(arr) Then i = -1
    Return i
End Function

另请参阅