Иллюстрированный самоучитель по Visual Basic .NET

Условные команды и принятие решений. Изменения в видимости переменных. Ускоренная проверка.

В VB.NET условная команда If, как и в VB6, существует в двух версиях – однострочной и многострочной:

If X < 0 Then Console.WriteLine("Number must be positive!")

Условие конструкции If-Then может содержать логические операторы And, Or и Not. Довольно часто программа выполняет разные действия в зависимости от того, окажется ли условие истинным или ложным. В этом случае базовая форма команды:

If-Then:
If условие Then
' Команды VB.NET (0 и более) End If

Дополняется одной или несколькими секциями Else:

If условие Then
' Команды VB.NET (0 и более) Else
' Команды VB.NET (0 и более)
End If

Несколько последовательных проверок в секциях Else можно оформить в виде конструкции Elself:

If условие Then
' Команды
Elself условие Then
' Команды
Elself условие Then
' Команды
Else
' Команды
End If

Примечание
Конструкция If-Then может использоваться для преждевременного выхода из цикла – для этого она объединяется с командой Exit Do или Exit For. Встретив команду Exit Do или Exit For, VB.NET немедленно завершает цикл и продолжает выполнение программы с команды, следующей за ключевым словом Loop или Next (в зависимости от типа цикла)
.

Изменения в видимости переменных

Область видимости переменных и методов в VB.NET определяется по более сложным правилам, чем в прежних версиях VB. Эта тема подробно описана в главах 4 и 5. В частности, изменения проявляются при объявлении переменных в теле цикла или блока If-Then. Такие переменные невидимы за пределами блока, в котором они были объявлены. Например, в следующем фрагменте мы выбираем одну из двух версий строковой переменной Risk и затем пытаемся использовать ее:

If income < 100000 Then
Dim risk As String = "too much risk" Else
Dim risk As String = "love to make a deal"
End If
Console.WriteLine("Your risk level is " & Risk)

На экране появляется сообщение об ошибке:

The name 'risk' is not declared.

Видимость обеих версий переменной risk ограничивается блоком, в котором они были объявлены! Мораль: не объявляйте переменные внутри блоков, если для этого нет веских причин.

Ускоренная проверка

Если компилятор обнаруживает, что проверенная часть сложного логического условия однозначно определяет результат, он не проверяет остаток выражения. Это называется ускоренной проверкой (short curcuiting). Например, если в следующем примере переменная foo ложна, компилятор не проверяет переменную bar:

If foo And bar Then…

Так было в VB.NET бета-версии 1, но в прежних версиях VB ускоренная проверка не применялась. После многочисленных жалоб разработчики Microsoft вернули старую интерпретацию логических операторов And и Or и добавили новые ключевые слова AndAlso и OrElse, поддерживающие ускоренную проверку:

If foo AndAlso Then…
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.