If 運算子 (Visual Basic)

使用短路評估來有條件地傳回兩個值的其中一個。 您 If 可以使用三個引數或兩個引數來呼叫運算子。

Syntax

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 引數會進行評估,並將結果轉換為 BooleanTrueFalse 。 如果值為 Trueargument2 則會評估並傳回其值,但 argument3 不會進行評估。 如果運算式的值 BooleanFalseargument3 則會評估並傳回其值,但 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 但 when 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))

另請參閱