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


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

Выполняет ту или иную группу операторов в зависимости от значения выражения.

Синтаксис

' Multiline syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

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

В этой статье приведено несколько примеров, иллюстрирующих использование If...Then...Else утверждение:

Детали

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

Если выражение является переменной nullBoolean, которая оценивает значение Nothing, условие обрабатывается как если выражение имеетсяFalse, а ElseIf блоки оцениваются, если они существуют, или Else блок выполняется, если он существует.

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 инструкция (если есть) вычисляется в порядке. True elseifcondition При обнаружении операторы сразу после связанного ElseIf действия выполняются. Если операторы Trueотсутствуют elseifcondition или ElseIf отсутствуют, выполняются следующие Else инструкции. После выполнения приведенных ниже ThenElseIfинструкций или Elseвыполнения выполняется следующая End Ifинструкция.

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

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

Совет

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

Синтаксис с одной строкой

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

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

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

Пример многостроного синтаксиса

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

'Create a Random object to seed our starting value 
Dim randomizer As New Random()
'set our variable
Dim count As Integer = randomizer.Next(0, 5)

Dim message As String

'If count is zero, output will be no items
If count = 0 Then
    message = "There are no items."
    'If count is 1, output will be "There is 1 item.".        
ElseIf count = 1 Then
    message = "There is 1 item."
    'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count. 
Else
    message = $"There are {count} items."
End If

Console.WriteLine(message)

'This example displays output like the following:
' There are 4 items.

Пример вложенного синтаксиса

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

Public Sub Main()
    ' Run the function as part of the WriteLine output.
    Console.WriteLine("Time Check is " & CheckIfTime() & ".")
End Sub

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 3:59 P.M.,
    ' or if Thursday from noon to 12:59 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

'This example displays output like the following:
'Time Check is False.

Пример синтаксиса с одной строкой

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

Private Sub SingleLine()

    'Create a Random object to seed our starting values 
    Dim randomizer As New Random()

    Dim A As Integer = randomizer.Next(10, 20)
    Dim B As Integer = randomizer.Next(0, 20)
    Dim C As Integer = randomizer.Next(0, 5)

    'Let's display the initial values for comparison
    Console.WriteLine($"A value before If: {A}")
    Console.WriteLine($"B value before If: {B}")
    Console.WriteLine($"C value before If: {C}")

    ' If A > 10, execute the three colon-separated statements in the order
    ' that they appear
    If A > 10 Then A = A + 1 : B = B + A : C = C + B

    'If the condition is true, the values will be different
    Console.WriteLine($"A value after If: {A}")
    Console.WriteLine($"B value after If: {B}")
    Console.WriteLine($"C value after If: {C}")

End Sub

'This example displays output like the following:
'A value before If: 11
'B value before If: 6
'C value before If: 3
'A value after If: 12
'B value after If: 18
'C value after If: 21

См. также