AndAlso 運算子 (Visual Basic)
在兩個運算式上執行最少運算邏輯結合。
語法
result = expression1 AndAlso expression2
組件
詞彙 | 定義 |
---|---|
result |
必要。 任何 Boolean 運算式。 結果是兩個運算式比較的 Boolean 結果。 |
expression1 |
必要。 任何 Boolean 運算式。 |
expression2 |
必要。 任何 Boolean 運算式。 |
備註
若編譯過的程式碼可以根據另一個運算式的結果來跳過評估一個運算式時,則邏輯運算就會被稱為短路運算。 如果評估的第一個運算式結果確定了運算的最終結果,則不需要評估第二個運算式,因為它無法改變最終結果。 如果跳過的運算式很複雜,或者它涉及程序呼叫,則短路運算可以改善效能。
如果兩個運算式都評估為 True
,則 result
為 True
。 下表說明如何判斷 result
。
如果 expression1 為 |
且 expression2 為 |
result 的值即為 |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(未評估) | False |
注意
在布林值比較中,And
運算子一律會評估這兩個運算式,其中包括進行程序呼叫。 AndAlso 運算子會執行短路運算,這表示如果 expression1
是 False
,則不會評估 expression2
。
資料類型
AndAlso
運算子只會針對布林值資料類型進行定義。 Visual Basic 會視需要將每個運算元轉換成 Boolean
,再評估運算式。 如果您將結果指派給數值類型,則 Visual Basic 會將它從 Boolean
轉換成該類型,使 False
變成 0
以及 True
變成 -1
。
如需詳細資訊,請參閱布林值類型轉換。
多載化
And 運算子 和 IsFalse 運算子可以多載,這表示一個類別或結構可以在運算元具有該類別或結構的類型時重新定義其行為。 多載 And
和 IsFalse
運算子會影響 AndAlso
運算子的行為。 如果您的程式碼在多載 And
和 IsFalse
的類別或結構上使用 AndAlso
,請務必了解其重新定義的行為。 如需詳細資訊,請參閱 Operator Procedures。
範例 1
下列範例使用 AndAlso
運算子,對兩個運算式執行邏輯結合。 結果是一個表示整個聯結運算式是否為 true 的 Boolean
值。 如果第一個運算式是 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
、False
和 False
的結果。 在 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