共用方式為


If 運算子

更新:2007 年 11 月

使用最少運算評估,有條件地傳回兩個值的其中一個。If 運算子可以使用三個引數或兩個引數來進行呼叫。

If( [argument1,] argument2, argument3 )

用三個引數呼叫 If 運算子

當使用三個引數呼叫 If 時,第一個引數必須評估為可轉換成 Boolean 的值。該 Boolean 值會判斷要評估並傳回其餘兩個值中的哪一個。使用三個引數呼叫 If 運算子時,適用下列清單。

參數

  • argument1
    必要項。Boolean. 判斷要評估及傳回哪一個剩下的引數。

  • argument2
    必要項。Object. 如果 argument1 評估為 True 則加以評估及傳回。

  • argument3
    必要項。Object。如果 argument1 評估為 False 則加以評估及傳回。

使用三個引數呼叫的 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"))

下列範例說明最少運算評估的值。範例顯示除了 divisor 為零以外,將變數 number 除以變數 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 runtime 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))

請參閱

概念

可為 Null 的實值型別

參考

Nothing (Visual Basic)

IIf 函式