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

ときにIf呼びますとしてキャスト可能な値に 3 つの引数を使用すると、最初の引数を評価する必要があります、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. 次の一覧に適用される場合にのみ、If演算子が 3 つの引数を使用して呼び出されました。The following list applies only when the If operator is called by using three arguments.

指定項目Parts

用語Term 定義Definition
argument1 必須。Required. BooleanBoolean. 評価し、返すその他の引数のどちらを決定します。Determines which of the other arguments to evaluate and return.
argument2 必須。Required. ObjectObject. 評価され、返された場合argument1に評価されるTrueします。Evaluated and returned if argument1 evaluates to True.
argument3 必須。Required. ObjectObject. 評価され、返された場合argument1に評価されるFalse場合argument1は、 Nullable Booleanに評価される変数Nothingします。Evaluated and returned if argument1 evaluates to False or if argument1 is a NullableBoolean variable that evaluates to Nothing.

Ifのように 3 つの引数で呼び出される演算子の動作、IIf関数を使用するショート サーキット評価します。An If operator that is called with three arguments works like an IIf function except that it uses short-circuit evaluation. IIf関数は、引数の 3 つすべてを常に評価は、Ifを 3 つの引数を持つ演算子が 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. 値が場合Trueargument2が評価され、その値が返されますが、argument3は評価されません。If the value is True, argument2 is evaluated and its value is returned, but argument3 is not evaluated. 場合の値、Boolean式がFalseargument3が評価され、その値が返されますが、argument2は評価されません。If the value of the Boolean expression is False, argument3 is evaluated and its value is returned, but argument2 is not evaluated. 次の例の使用方法を示しますIf3 つの引数を使用する場合。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. 変数を分割しようと 2 つの例を示しますnumber変数によってdivisorする場合を除くdivisorは 0 です。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 の場合除数 0 ではないと、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. ObjectObject. 参照または null 許容型である必要があります。Must be a reference or nullable type. 評価され、以外の値に評価するときに返されるNothingします。Evaluated and returned when it evaluates to anything other than Nothing.
argument3 必須。Required. ObjectObject. 評価され、返された場合argument2に評価されるNothingします。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