Поделиться через


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

Выполняет блок операторов в зависимости от значения выражения.

' Multiple-line syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]

Части

  • condition
    Обязательный. Выражение. Должен принимать значение True или False или должен быть типом данных, который можно преобразовть в Boolean.

  • Then
    В однострочном синтаксисе является обязательным параметром, а в многострочной — необязательным.

  • statements
    Необязательный. Один или несколько операторов следующих за If...Then, которые выполняются, если результатом вычисления condition является True.

  • elseifcondition
    Требуется, если имеется ElseIf. Выражение. Должен принимать значение True или False или должен быть типом данных, который можно преобразовть в Boolean.

  • elseifstatements
    Необязательный. Один или несколько операторов следующих за ElseIf...Then, которые выполняются, если результатом вычисления elseifcondition является True.

  • elsestatements
    Необязательный. Один или несколько операторов, которые выполняются, если нет предшествующего выражения condition или elseifcondition, которое имеет значение True.

  • End If
    Завершает блок If...Then...Else.

Заметки

Многострочный синтаксис

Когда встречается оператор If...Then...Else, проверяется condition. Если condition имеет значение True, операторы, следующие за Then, выполняются. Если condition имеет значение False, то все операторы ElseIf (если они есть) выполняются по порядку. Если найдено elseifcondition, которое имеет значение True, выполняются операторы, следующие непосредственно за соответствующим оператором ElseIf. Если отсутствуют elseifcondition, которые имеют значение True или отсутствуют операторы ElseIf, то вызываются операторы, следующие за Else. После выполнения операторов следующих за Then, ElseIf и Else, выполнение продолжается с оператора, следующего за End If.

Предложения ElseIf и Else являются необязательными. Можно поместить любое количество выражений ElseIf внутри оператора If...Then...Else, но ElseIf не может находиться после выражения Else. Операторы If...Then...Else могут быть вложены друг друга.

В многострочном синтаксисе оператор If должен быть единственным оператором в первой строке. Операторам ElseIf, Else и End If может предшествовать только метка строки. Блок If...Then...Else должен заканчиваться оператором End If.

Совет

Оператор Оператор Select...Case (Visual Basic) может оказаться более полезным при работе с одним выражением, которое может иметь несколько возможных значений.

Однострочный синтаксис

Можно использовать однострочный синтаксис для коротких, простых проверок. Однако многострочный синтаксис предоставляет большую структурированность, гибкость и обычно ее легче читать, обслуживать и отлаживать, чем однострочную.

Данные, следующие за ключевым словом Then, проверяются, чтобы определить, является ли оператор однострочным If. Если после Then есть какое-то выражение в той же строке, кроме примечаний, то данный оператор является однострочным оператором If. Если отсутствует Then, это должно быть началом многострочного If...Then...Else.

При использовании однострочного синтаксиса возможно выполнение нескольких операторов в результате решения If...Then. Все операторы должны быть в одной строке и разделяться двоеточием.

Пример

В следующем примере показано использование многострочного синтаксиса оператора If...Then...Else.

        Dim count As Integer = 0
        Dim message As String

        If count = 0 Then
            message = "There are no items."
        ElseIf count = 1 Then
            message = "There is 1 item."
        Else
            message = "There are " & count & " items."
        End If

В следующем примере содержатся вложенные операторы If...Then...Else.

Private Function CheckIfTime() As Boolean
    ' Determine the current day of week and hour of day.
    Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
    Dim hour As Integer = DateTime.Now.Hour

    ' Return True if Wednesday from 2 to 4 P.M.,
    ' or if Thursday from noon to 1 P.M.
    If dayW = DayOfWeek.Wednesday Then
        If hour = 14 Or hour = 15 Then
            Return True
        Else
            Return False
        End If
    ElseIf dayW = DayOfWeek.Thursday Then
        If hour = 12 Then
            Return True
        Else
            Return False
        End If
    Else
        Return False
    End If
End Function

В следующем примере показано использование однострочного синтаксиса.

If A > 10 Then A = A + 1 : B = B + A : C = C + B

См. также

Задачи

Практическое руководство. Запуск инструкции в зависимости от одного или более условий (Visual Basic)

Ссылки

Директивы #If...Then...#Else

Choose

Оператор Select...Case (Visual Basic)

Switch

Основные понятия

Вложенные структуры управления (Visual Basic)

Структуры решений (Visual Basic)

Логические и побитовые операторы в Visual Basic

Журнал изменений

Дата

Журнал

Причина

Декабрь 2010

Раздел примечаний реорганизован.

Улучшение информации.

Декабрь 2010

Добавлен пример.

Обратная связь от клиента.