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

Использует оценку короткого канала для условного возврата одного из двух значений. Оператор If можно вызывать с тремя аргументами или двумя аргументами.

Синтаксис

If( [argument1,] argument2, argument3 )

Если оператор вызывается с тремя аргументами

При If вызове с помощью трех аргументов первый аргумент должен оценить значение, которое может быть приведение в качестве Booleanзначения. Это Boolean значение определяет, какие из других двух аргументов вычисляются и возвращаются. Следующий список применяется только в том случае, если If оператор вызывается с помощью трех аргументов.

Детали

Термин Определение
argument1 Обязательный. Boolean. Определяет, какие из других аргументов следует оценивать и возвращать.
argument2 Обязательный. Object. Вычисляется и возвращается, если argument1 вычисляется Trueзначение .
argument3 Обязательный. Object. Вычисляется и возвращается, если argument1 вычисляется False или argument1 является ли переменная, допускающаяBoolean значение NULL, которая оценивается как Nothing.

Оператор If , который вызывается с тремя аргументами, работает как IIf функция, за исключением того, что она использует оценку короткого канала. Функция IIf всегда вычисляет все три его аргумента, в то время как If оператор с тремя аргументами оценивает только два из них. Первый If аргумент вычисляется, и результат приведение в качестве Boolean значения True или False. Если значение равно True, argument2 вычисляется и возвращается его значение, но argument3 не вычисляется. Если значение Boolean выражения равно False, argument3 вычисляется и возвращается его значение, но argument2 не вычисляется. В следующих примерах показано использование 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"))

В следующем примере показано значение оценки короткого канала. В примере показаны две попытки разделить переменную по переменной numberdivisor , за исключением случаев, когда divisor равно нулю. В этом случае должно быть возвращено значение 0, и попытка выполнить разделение не должна быть выполнена, так как ошибка во время выполнения приведет к возникновению ошибки во время выполнения. If Так как выражение использует оценку короткого канала, оно вычисляет второй или третий аргумент в зависимости от значения первого аргумента. Если первый аргумент имеет значение true, делитель не равен нулю, и он безопасно оценить второй аргумент и выполнить деление. Если первый аргумент имеет значение false, вычисляется только третий аргумент и возвращается значение 0. Таким образом, если разделитель равен 0, попытка выполнить деление не выполняется и результатов ошибок не выполняется. Однако, так как IIf не используется оценка короткого канала, второй аргумент вычисляется даже при значении false первого аргумента. Это приводит к ошибке деления времени выполнения на нуль.

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 вызове оператора с двумя аргументами.

Детали

Термин Определение
argument2 Обязательный. Object. Должен быть ссылочным или пустым типом значения. Вычисляется и возвращается, когда он оценивает что-либо другое, кроме Nothing.
argument3 Обязательный. Object. Вычисляется и возвращается, если argument2 вычисляется Nothingзначение .

Boolean Если аргумент опущен, первый аргумент должен быть ссылочным или пустым типом значения. Если первый аргумент оценивается Nothing, возвращается значение второго аргумента. Во всех остальных случаях возвращается значение первого аргумента. В следующем примере показано, как работает эта оценка:

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

См. также