Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Использует оценку короткого канала для условного возврата одного из двух значений. Оператор 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))