If 運算子 (Visual Basic)
使用短路評估,依條件傳回兩個值的其中一個。 您可以使用三個引數或兩個引數呼叫 If
運算子。
語法
If( [argument1,] argument2, argument3 )
使用三個引數呼叫 if 運算子
使用三個引數呼叫 If
時,第一個引數必須評估為可轉換成 Boolean
的值。 Boolean
值會決定要評估並傳回其他兩個引數的哪一個。 只有在使用三個引數呼叫 If
運算子時,才適用下列清單。
組件
詞彙 | 定義 |
---|---|
argument1 |
必要。 Boolean . 決定要評估並傳回的其他引數的哪一個。 |
argument2 |
必要。 Object . 若 argument1 評估為 True ,則予以評估並傳回。 |
argument3 |
必要。 Object . 若 argument1 評估為 False ,則予以評估並傳回;若 argument1 是可為 Null 的 Boolean 變數,則評估為 Nothing。 |
使用三個引數呼叫的 If
運算子,運作方式就像 IIf
函式一樣,不同之處在於前者會使用短路評估。 IIf
函式一律會評估全部三個引數,而具有三個引數的 If
運算子只會評估其中兩個引數。 第一個 If
引數會經過評估,而結果會轉換成 Boolean
值,即 True
或 False
。 如果值為 True
,就會評估 argument2
並傳回其值,但不會評估 argument3
。 如果 Boolean
運算式的值為 False
,就會評估 argument3
並傳回其值,但不會評估 argument2
。 下列範例說明使用三個引數時,If
的用法:
' This statement prints TruePart, because the first argument is true.
Console.WriteLine(If(True, "TruePart", "FalsePart"))
' This statement prints FalsePart, because the first argument is false.
Console.WriteLine(If(False, "TruePart", "FalsePart"))
Dim number = 3
' With number set to 3, this statement prints Positive.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
number = -1
' With number set to -1, this statement prints Negative.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
下列範例說明短路評估的值。 此範例顯示兩次嘗試將變數 number
除以變數 divisor
,divisor
為零時除外。 在該情況下,應傳回 0,且不應嘗試執行除法,因為會導致執行階段錯誤。 因為 If
運算式會使用短路評估,所以會根據第一個引數的值評估第二或第三個引數。 如果第一個引數為 true,則除數不是零,而且可以安全地評估第二個引數並執行除法。 如果第一個引數為 false,則只會評估第三個引數,並傳回 0。 因此,當除數為 0 時,不會嘗試執行除法,也不會產生任何錯誤結果。 不過,由於 IIf
不會使用短路評估,因此即使第一個引數為 false,也會評估第二個引數。 這會導致執行階段除以零的錯誤。
number = 12
' When the divisor is not 0, both If and IIf return 4.
Dim divisor = 3
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))
' When the divisor is 0, IIf causes a run-time error, but If does not.
divisor = 0
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
' Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))
使用兩個引數呼叫 if 運算子
If
的第一個引數可以省略。 這樣即可只使用兩個引數呼叫運算子。 只有在使用兩個引數呼叫 If
運算子時,才適用下列清單。
組件
詞彙 | 定義 |
---|---|
argument2 |
必要。 Object . 必須是參考或可為 Null 的實值型別。 評估為 Nothing 以外的任何值時,則予以評估並傳回。 |
argument3 |
必要。 Object . 若 argument2 評估為 Nothing ,則予以評估並傳回。 |
省略 Boolean
引數時,第一個引數必須是參考或可為 Null 的實值型別。 如果第一個引數評估為 Nothing
,則會傳回第二個引數的值。 在其他情況下,均會傳回第一個引數的值。 下列範例說明此評估的運作方式:
' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6
' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))
second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))
first = Nothing
second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))