对两个表达式执行短路逻辑连线。
语法
result = expression1 AndAlso expression2
部件
| 术语 | 定义 |
|---|---|
result |
必填。 任何 Boolean 表达式。 结果是 Boolean 两个表达式的比较结果。 |
expression1 |
必填。 任何 Boolean 表达式。 |
expression2 |
必填。 任何 Boolean 表达式。 |
注解
如果编译的代码可以绕过一个表达式的计算,则表示逻辑作会 短路 ,具体取决于另一个表达式的结果。 如果计算的第一个表达式的结果确定作的最终结果,则无需计算第二个表达式,因为它无法更改最终结果。 如果绕过的表达式很复杂,或者涉及到过程调用,则短路可以提高性能。
如果两个表达式的计算结果Trueresult为 True: 下表说明了如何 result 确定。
如果 expression1 为 |
且 expression2 为 |
值为result |
|---|---|---|
True |
True |
True |
True |
False |
False |
False |
(未评估) | False |
注释
在布尔比较中, And 运算符始终计算这两个表达式,其中包括进行过程调用。
AndAlso 运算符执行短路,这意味着如果是expression1False,expression2则不计算。
数据类型
仅 AndAlso 为 布尔数据类型定义运算符。 Visual Basic 在计算表达式之前根据需要 Boolean 将每个作数转换为。 如果将结果分配给数值类型,Visual Basic 会将结果从 Boolean 该类型转换为该类型,以便 False 变为 0 和 True 变为 -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
前面的示例分别生成结果True和FalseFalse结果。 在计算 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