在兩個表達式上執行縮短邏輯結合。
語法
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 。 如果您的程式代碼在 AndAlso 多載 And 和 IsFalse的類別或結構上使用 ,請務必瞭解其重新定義的行為。 如需詳細資訊,請參閱 運算符程式。
範例 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
上述範例分別會產生、 False和 False的結果True。 在的計算 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