AndAlso 運算子 (Visual Basic)

在兩個運算式上執行最少運算邏輯結合。

語法

result = expression1 AndAlso expression2  

組件

詞彙 定義
result 必要。 任何 Boolean 運算式。 結果是兩個運算式比較的 Boolean 結果。
expression1 必要。 任何 Boolean 運算式。
expression2 必要。 任何 Boolean 運算式。

備註

若編譯過的程式碼可以根據另一個運算式的結果來跳過評估一個運算式時,則邏輯運算就會被稱為短路運算。 如果評估的第一個運算式結果確定了運算的最終結果,則不需要評估第二個運算式,因為它無法改變最終結果。 如果跳過的運算式很複雜,或者它涉及程序呼叫,則短路運算可以改善效能。

如果兩個運算式都評估為 True,則 resultTrue。 下表說明如何判斷 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 運算子可以多載,這表示一個類別或結構可以在運算元具有該類別或結構的類型時重新定義其行為。 多載 AndIsFalse 運算子會影響 AndAlso 運算子的行為。 如果您的程式碼在多載 AndIsFalse 的類別或結構上使用 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

上述範例分別會產生 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

另請參閱