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 值,即 TrueFalse。 如果值為 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 除以變數 divisordivisor 為零時除外。 在該情況下,應傳回 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))

另請參閱