Принятый ответ не имеет никакого объяснения и представляет собой просто ссылку.
Поэтому я решил оставить ответ, объясняющий, как работает оператор If
, взятый из MSDN:
Использует оценку короткого замыкания для условного возврата одного из двух
ценности. Оператор If можно вызывать с тремя аргументами или с двумя
аргументы.
If( [argument1,] argument2, argument3 )
Если оператор вызывается с двумя аргументами
Первый аргумент Если можно опустить. Это позволяет оператору
быть вызванным с использованием только двух аргументов. Следующий список применяется
только когда оператор If вызывается с двумя аргументами.
части
Term Definition
---- ----------
argument2 Required. Object. Must be a reference or nullable type.
Evaluated and returned when it evaluates to anything
other than Nothing.
argument3 Required. Object.
Evaluated and returned if argument2 evaluates to Nothing.
Если аргумент Boolean опущен, первый аргумент должен быть
ссылочный или обнуляемый тип. Если первый аргумент оценивается как
Ничего , значение второго аргумента возвращается. Во всех остальных случаях возвращается значение первого аргумента.
Следующий пример иллюстрирует, как работает эта оценка.
VB
' 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))
Пример того, как обрабатывать более двух значений (вложенные if
с):
Dim first? As Integer = Nothing
Dim second? As Integer = Nothing
Dim third? As Integer = 6
' The LAST parameter doesn't have to be nullable.
'Alternative: Dim third As Integer = 6
' Writes "6", because the first two values are "Nothing".
Console.WriteLine(If(first, If(second, third)))