Оператор If (Visual Basic)If Operator (Visual Basic)

Использует сокращенные вычисления, в условно возвращает одно из двух значений.Uses short-circuit evaluation to conditionally return one of two values. If Оператор может вызываться с тремя или с двумя аргументами.The If operator can be called with three arguments or with two arguments.

СинтаксисSyntax

If( [argument1,] argument2, argument3 )  

Оператор If с тремя аргументамиIf Operator Called with Three Arguments

Когда 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 значение будет определять, какой из двух других аргументов вычисляется и возвращается.That Boolean value will determine which of the other two arguments is evaluated and returned. Следующий список применяется, только если 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. Если вычисленное и возвращаются в argument1 равен True.Evaluated and returned if argument1 evaluates to True.
argument3 Обязательно.Required. Object.Object. Если вычисленное и возвращаются в argument1 равен False или если argument1Nullable Boolean переменной, результатом которого является ничего не.Evaluated and returned if argument1 evaluates to False or if argument1 is a NullableBoolean variable that evaluates to Nothing.

If Оператор, который вызывается с тремя аргументами работает подобно IIf функции, за исключением того, что он использует сокращенные вычисления.An If operator that is called with three arguments works like an IIf function except that it uses short-circuit evaluation. IIf Функция всегда вычисляет все три аргументов, тогда как If с тремя аргументами вычисляет только два из них.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. Следующие примеры иллюстрируют использование 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. В примере показано две попытки деления переменной number переменной divisor только если divisor равно нулю.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 выражение использует сокращенные вычисления, оно вычисляет второй или третий аргумент, в зависимости от значения первого аргумента.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, делитель не равна нулю и безопасно вычисления второго аргумента и деление.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, только третий аргумент вычисляется и возвращается значение 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.However, because IIf does not use short-circuit evaluation, the second argument is evaluated even when the first argument is false. Это приводит к ошибке деления на ноль во время выполнения.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))

Оператор If с двумя аргументамиIf Operator Called with Two Arguments

Первый аргумент If можно опустить.The first argument to If can be omitted. Благодаря этому оператор вызываться с использованием только двух аргументов.This enables the operator to be called by using only two arguments. Следующий список применяется, только если If оператор был вызван с двумя аргументами.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. Если вычисленное и возвращаются в argument2 равен Nothing.Evaluated and returned if argument2 evaluates to Nothing.

Когда Boolean аргумент опущен, первый аргумент должен быть ссылкой или типом nullable.When the Boolean argument is omitted, the first argument must be a reference or nullable type. Если первый аргумент принимает значение Nothing, возвращается значение второго аргумента.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

IIf
Типы значений, допускающие значение NULLNullable Value Types
NothingNothing