在兩個表達式上執行包含邏輯分離的簡短運算。
語法
result = expression1 OrElse expression2
組件
result
必須的。 任何 Boolean 表達式。
expression1
必須的。 任何 Boolean 表達式。
expression2
必須的。 任何 Boolean 表達式。
備註
如果編譯的程式代碼可以根據另一個表達式的結果略過一個表達式的評估,則邏輯運算會變成 短途 運算。 如果評估的第一個表達式結果決定作業的最終結果,就不需要評估第二個表達式,因為它無法變更最終結果。 如果略過表達式很複雜,或牽涉到過程調用,則縮短線路可能會改善效能。
如果或兩個表示式都評估為 True, result 則 為 True。 下表說明如何 result 判斷。
如果 expression1 為 |
且 expression2 為 |
的值 result 為 |
|---|---|---|
True |
( 未評估 ) | True |
False |
True |
True |
False |
False |
False |
數據類型
運算子 OrElse 只會針對 布爾數據類型定義。 Visual Basic 會視需要 Boolean 將每個作數轉換成 ,然後再評估表達式。 如果您將結果指派給數值類型,Visual Basic 會將它從 Boolean 轉換成該類型,因此False會變成 0 和 True 。-1
如需詳細資訊,請參閱 布爾型別轉換。
重載
Or 運算子和 IsTrue 運算元可以多載,這表示當作數具有該類別或結構的類型時,類別或結構可以重新定義其行為。 多 Or 載和 IsTrue 運算子會影響 運算子的行為 OrElse 。 如果您的程式代碼在 OrElse 多載 Or 和 IsTrue的類別或結構上使用 ,請務必瞭解其重新定義的行為。 如需詳細資訊,請參閱 運算符程式。
範例 1
下列範例會 OrElse 使用 運算符,對兩個表達式執行邏輯分離。 結果是值,表示這兩個 Boolean 表達式是否為 true。 如果第一個表達式為 True,則不會評估第二個表達式。
Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b OrElse b > c
secondCheck = b > a OrElse b > c
thirdCheck = b > a OrElse c > b
上述範例分別會產生、 True和 False 的結果True。 在的計算 firstCheck中,不會評估第二個運算式,因為第一個運算式已經 True是 。 不過,第二個表達式會在的 secondCheck計算中進行評估。
範例 2
下列範例顯示包含兩個 If過程調用的 ...Then 語句。 如果第一個呼叫傳 True回 ,則不會呼叫第二個程式。 如果第二個程式執行程式執行程式代碼的這個區段時,應該一律執行的重要工作,這可能會產生非預期的結果。
If testFunction(5) = True OrElse otherFunction(4) = True Then
' If testFunction(5) is True, otherFunction(4) is not called.
' Insert code to be executed.
End If