If 演算子 (Visual Basic)
ショートサーキット評価を使用して、条件に応じて 2 つの値のいずれかを返します。 If
演算子は、3 つの引数または 2 つの引数を指定して呼び出すことができます。
構文
If( [argument1,] argument2, argument3 )
3 つの引数を指定して If 演算子を呼び出す場合
3 つの引数を使用して If
を呼び出す場合、最初の引数は Boolean
としてキャストできる値に評価される必要があります。 この Boolean
値によって、他の 2 つの引数のうち、どちらが評価されて返されるかが決まります。 次の一覧は、3 つの引数を使用して If
演算子を呼び出す場合にのみ適用されます。
指定項目
用語 | 定義 |
---|---|
argument1 |
必須です。 Boolean 。 他のどの引数を評価して返すかを決定します。 |
argument2 |
必須です。 Object . argument1 が True に評価された場合に、評価されて返されます。 |
argument3 |
必須です。 Object . argument1 が False に評価された場合、または argument1 が Nothing に評価された null 許容Boolean 変数である場合に、評価されて返されます。 |
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
による変数 number
の除算が 2 回試行されていることを示しています。これは divisor
がゼロの場合以外に行われます。 該当する場合は 0 が返されます。また、実行時エラーが発生するため、除算を実行しようとしないでください。 If
式ではショートサーキット評価が使用されるため、最初の引数の値に応じて、2 番目または 3 番目の引数のいずれかが評価されます。 最初の引数が true の場合、除数はゼロではなく、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 演算子を呼び出す場合
If
の最初の引数は省略できます。 これにより、2 つの引数のみを使用してこの演算子を呼び出すことができます。 次の一覧は、2 つの引数を使用して If
演算子を呼び出す場合にのみ適用されます。
指定項目
用語 | 定義 |
---|---|
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