If 演算子 (Visual Basic)If Operator (Visual Basic)

は、ショートサーキット評価を使用して、条件に応じて2つの値のいずれかを返します。Uses short-circuit evaluation to conditionally return one of two values. If 演算子は、3つの引数または2つの引数を指定して呼び出すことができます。The If operator can be called with three arguments or with two arguments.

構文Syntax

If( [argument1,] argument2, argument3 )

3つの引数を指定して演算子が呼び出された場合If operator called with three arguments

3つの引数を使用して If が呼び出された場合、最初の引数は Booleanとしてキャストできる値に評価される必要があります。When If is called by using three arguments, the first argument must evaluate to a value that can be cast as a Boolean. この Boolean 値によって、他の2つの引数のどちらが評価され、返されるかが決まります。That Boolean value will determine which of the other two arguments is evaluated and returned. 次の一覧は、3つの引数を使用して If 演算子が呼び出された場合にのみ適用されます。The following list applies only when the If operator is called by using three arguments.

指定項目Parts

用語Term 定義Definition
argument1 必須です。Required. Boolean.Boolean. 他のどの引数を評価して返すかを決定します。Determines which of the other arguments to evaluate and return.
argument2 必須です。Required. Object.Object. 評価され、argument1Trueに評価される場合に返されます。Evaluated and returned if argument1 evaluates to True.
argument3 必須です。Required. Object.Object. argument1False と評価された場合、または argument1Nothingに評価されるnull 許容Boolean 変数である場合に評価され、返されます。Evaluated and returned if argument1 evaluates to False or if argument1 is a NullableBoolean variable that evaluates to Nothing.

3つの引数を指定して呼び出される If 演算子は、ショートサーキット評価を使用する点を除いて、IIf 関数と同様に機能します。An If operator that is called with three arguments works like an IIf function except that it uses short-circuit evaluation. IIf 関数は、常に3つの引数をすべて評価します。一方、3つの引数を持つ If 演算子は、そのうち2つだけを評価します。An IIf function always evaluates all three of its arguments, whereas an If operator that has three arguments evaluates only two of them. 最初の If 引数が評価され、結果は Boolean 値、True、または Falseとしてキャストされます。The first If argument is evaluated and the result is cast as a Boolean value, True or False. 値が True場合、argument2 が評価され、その値が返されますが、argument3 は評価されません。If the value is True, argument2 is evaluated and its value is returned, but argument3 is not evaluated. Boolean 式の値が False場合、argument3 が評価され、その値が返されますが、argument2 は評価されません。If the value of the Boolean expression is False, argument3 is evaluated and its value is returned, but argument2 is not evaluated. 次の例は、3つの引数を使用する場合の If の使用方法を示しています。The following examples illustrate the use of If when three arguments are used:

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

次の例は、ショートサーキット評価の値を示しています。The following example illustrates the value of short-circuit evaluation. この例では、divisor がゼロの場合を除き、変数 divisor によって変数 number を分割する2回の試行を示しています。The example shows two attempts to divide variable number by variable divisor except when divisor is zero. この場合、0が返されます。実行時エラーが発生するため、除算を行わないでください。In that case, a 0 should be returned, and no attempt should be made to perform the division because a run-time error would result. If 式ではショートサーキット評価が使用されるため、最初の引数の値に応じて、2番目または3番目の引数のいずれかが評価されます。Because the If expression uses short-circuit evaluation, it evaluates either the second or the third argument, depending on the value of the first argument. 最初の引数が true の場合、除数はゼロではなく、2番目の引数を評価して除算を実行しても安全です。If the first argument is true, the divisor is not zero and it is safe to evaluate the second argument and perform the division. 最初の引数が false の場合は、3番目の引数のみが評価され、0が返されます。If the first argument is false, only the third argument is evaluated and a 0 is returned. したがって、除数が0の場合、除算は実行されず、エラーも発生しません。Therefore, when the divisor is 0, no attempt is made to perform the division and no error results. ただし、IIf ではショートサーキット評価を使用しないため、最初の引数が false の場合でも2番目の引数が評価されます。However, because IIf does not use short-circuit evaluation, the second argument is evaluated even when the first argument is false. これにより、実行時の0除算エラーが発生します。This causes a run-time divide-by-zero error.

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 operator called with two arguments

If の最初の引数は省略できます。The first argument to If can be omitted. これにより、2つの引数のみを使用して演算子を呼び出すことができます。This enables the operator to be called by using only two arguments. 次の一覧は、If 演算子が2つの引数を指定して呼び出された場合にのみ適用されます。The following list applies only when the If operator is called with two arguments.

指定項目Parts

用語Term 定義Definition
argument2 必須です。Required. Object.Object. 参照または null 許容型である必要があります。Must be a reference or nullable type. 評価され、Nothing以外のものに評価された場合に返されます。Evaluated and returned when it evaluates to anything other than Nothing.
argument3 必須です。Required. Object.Object. 評価され、argument2Nothingに評価される場合に返されます。Evaluated and returned if argument2 evaluates to Nothing.

Boolean 引数を省略した場合、最初の引数は参照または null 許容型である必要があります。When the Boolean argument is omitted, the first argument must be a reference or nullable type. 最初の引数が Nothingに評価された場合、2番目の引数の値が返されます。If the first argument evaluates to Nothing, the value of the second argument is returned. それ以外の場合は、最初の引数の値が返されます。In all other cases, the value of the first argument is returned. 次の例は、この評価のしくみを示しています。The following example illustrates how this evaluation works:

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

関連項目See also