次の方法で共有


If 演算子 (Visual Basic)

短絡評価を使用して、2 つの値のいずれかを条件付きで返します。 If演算子は、3 つの引数または 2 つの引数を使用して呼び出すことができます。

構文

If( [argument1,] argument2, argument3 )

If 演算子を 3 つの引数で呼び出す

Ifが 3 つの引数を使用して呼び出されると、最初の引数はBooleanとしてキャストできる値に評価される必要があります。 その Boolean 値によって、評価されて返される他の 2 つの引数のうちどれが決定されます。 次の一覧は、 If 演算子が 3 つの引数を使用して呼び出された場合にのみ適用されます。

部品

任期 定義
argument1 必須。 Boolean。 評価して返すその他の引数を決定します。
argument2 必須。 Object。 評価され、 argument1Trueに評価された場合に返されます。
argument3 必須。 Objectargument1False に評価された場合、または argument1Null 許容変数である場合BooleanNothing に評価される場合に評価され、返されます。

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。 評価され、 argument2Nothingに評価された場合に返されます。

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))

こちらも参照ください