短絡評価を使用して、2 つの値のいずれかを条件付きで返します。
If
演算子は、3 つの引数または 2 つの引数を使用して呼び出すことができます。
構文
If( [argument1,] argument2, argument3 )
If 演算子を 3 つの引数で呼び出す
If
が 3 つの引数を使用して呼び出されると、最初の引数はBoolean
としてキャストできる値に評価される必要があります。 その Boolean
値によって、評価されて返される他の 2 つの引数のうちどれが決定されます。 次の一覧は、 If
演算子が 3 つの引数を使用して呼び出された場合にのみ適用されます。
部品
任期 | 定義 |
---|---|
argument1 |
必須。
Boolean 。 評価して返すその他の引数を決定します。 |
argument2 |
必須。
Object 。 評価され、 argument1 が True に評価された場合に返されます。 |
argument3 |
必須。
Object 。
argument1 が False に評価された場合、または argument1 が Null 許容変数である場合Boolean Nothing に評価される場合に評価され、返されます。 |
3 つの引数で呼び出される If
演算子は、ショートサーキット評価を使用する点を除き、 IIf
関数と同様に動作します。
IIf
関数は常に 3 つの引数すべてを評価しますが、3 つの引数を持つIf
演算子は、そのうちの 2 つだけを評価します。 最初の If
引数が評価され、結果は Boolean
値、 True
、または False
としてキャストされます。 値が True
の場合、 argument2
が評価され、その値が返されますが、 argument3
は評価されません。
Boolean
式の値がFalse
場合、argument3
が評価され、その値が返されますが、argument2
は評価されません。 次の例は、3 つの引数を使用する場合の 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
が 0 の場合を除き、変数number
を変数divisor
で除算する 2 つの試行を示しています。 その場合、0 を返す必要があり、実行時エラーが発生するため、除算の実行を試みる必要はありません。
If
式は短絡評価を使用するため、最初の引数の値に応じて、2 番目または 3 番目の引数を評価します。 最初の引数が true の場合、除数は 0 ではなく、2 番目の引数を評価して除算を実行しても安全です。 最初の引数が false の場合、3 番目の引数のみが評価され、0 が返されます。 したがって、除数が 0 の場合、除算の実行は試みず、エラー結果も実行されません。 ただし、 IIf
はショートサーキット評価を使用しないため、最初の引数が false の場合でも、2 番目の引数が評価されます。 これにより、実行時の 0 除算エラーが発生します。
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))
2 つの引数で呼び出された演算子
If
する最初の引数は省略できます。 これにより、2 つの引数のみを使用して演算子を呼び出すことができます。 次の一覧は、 If
演算子が 2 つの引数で呼び出された場合にのみ適用されます。
部品
任期 | 定義 |
---|---|
argument2 |
必須。
Object 。 参照型または null 許容値型である必要があります。
Nothing 以外に評価されたときに評価され、返されます。 |
argument3 |
必須。
Object 。 評価され、 argument2 が Nothing に評価された場合に返されます。 |
Boolean
引数を省略する場合、最初の引数は参照型または null 許容値型である必要があります。 最初の引数が Nothing
と評価された場合、2 番目の引数の値が返されます。 それ以外の場合は、最初の引数の値が返されます。 次の例は、この評価のしくみを示しています。
' 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))
こちらも参照ください
.NET