使用短期評估,有條件地傳回兩個值的其中一個。
If您可以使用三個自變數或兩個自變數來呼叫 運算符。
語法
If( [argument1,] argument2, argument3 )
如果運算子使用三個自變數呼叫
使用三個自變數呼叫 時 If ,第一個自變數必須評估為可轉換成 Boolean的值。 該值 Boolean 將決定要評估並傳回其他兩個自變數中的哪一個。 只有在使用三個自變數呼叫 運算子時, If 才會套用下列清單。
組件
| 術語 | 定義 |
|---|---|
argument1 |
必須的。
Boolean。 決定要評估並傳回的其他自變數之哪一個。 |
argument2 |
必須的。
Object。 如果評估為 True,則會評估並傳argument1回 。 |
argument3 |
必須的。
Object。 評估並傳回 ,如果 argument1 評估為 False ,或是否 argument1 為 可為Boolean Null 的變數,則評估為 Nothing。 |
If以三個自變數呼叫的運算子的運作方式就像函式一IIf樣,不同之處在於它會使用短線評估。 函 IIf 式一律會評估其三個自變數,而具有三個 If 自變數的運算符只會評估其中兩個自變數。 會評估第一個If自變數,並將結果轉換成值或 TrueFalse。Boolean 如果值為 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"))
下列範例說明短期評估的值。 此範例顯示兩次嘗試除零時除以變數numberdivisor之外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 。
組件
| 術語 | 定義 |
|---|---|
argument2 |
必須的。
Object。 必須是參考或可為 Null 的實值型別。 評估並傳回時,評估為 以外的 Nothing任何專案。 |
argument3 |
必須的。
Object。 如果評估為 Nothing,則會評估並傳argument2回 。 |
省略自 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))