Se... Então... Instrução Else (Visual Basic)

Executa condicionalmente um grupo de instruções, dependendo do valor de uma expressão.

Sintaxe

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

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

Este artigo inclui vários exemplos que ilustram os Ifusos do ...Then...Else Declaração:

Partes

condition
Obrigatório. Expressão. Deve avaliar para True ou False, ou para um tipo de dados que é implicitamente convertível em Boolean.

Se a expressão for uma variável anulável Boolean que é avaliada como Nothing, a condição será tratada como se a expressão fosse False, e os ElseIf blocos serão avaliados se existirem, ou o Else bloco será executado se existir.

Then
Obrigatório na sintaxe de linha única; opcional na sintaxe de várias linhas.

statements
Opcional. Uma ou mais instruções a seguir If(...)Then que são executadas se condition avaliadas como True.

elseifcondition
Obrigatório se ElseIf estiver presente. Expressão. Deve avaliar para True ou False, ou para um tipo de dados que é implicitamente convertível em Boolean.

elseifstatements
Opcional. Uma ou mais instruções a seguir ElseIf(...)Then que são executadas se elseifcondition avaliadas como True.

elsestatements
Opcional. Uma ou mais instruções que são executadas se nenhuma expressão ou elseifcondition anterior condition for avaliada como True.

End If
Encerra a versão multilinha do If...Then...Else bloquear.

Observações

Sintaxe de várias linhas

Quando um If...Then...Else a declaração é encontrada, condition é testada. Se condition for True, as instruções a seguir Then são executadas. Se condition for False, cada ElseIf afirmação (se houver) é avaliada em ordem. Quando um True elseifcondition é encontrado, as instruções imediatamente após o associado ElseIf são executadas. Se no elseifcondition for avaliado como True, ou se não ElseIf houver instruções, as instruções a seguir Else serão executadas. Depois de executar as instruções a seguir Then, ElseIfou Else, a execução continua com a instrução seguinte End If.

As ElseIf cláusulas e são Else ambas opcionais. Você pode ter quantas ElseIf cláusulas quiser em um If...Then...Else mas nenhuma ElseIf cláusula pode aparecer depois de uma Else cláusula. If...Then...Else as instruções podem ser aninhadas umas nas outras.

Na sintaxe de várias linhas, a If instrução deve ser a única instrução na primeira linha. As ElseIfinstruções , Elsee e End If podem ser precedidas apenas por um rótulo de linha. O If...Then...Else block deve terminar com uma End If instrução.

Gorjeta

O Select... A instrução Case pode ser mais útil quando você avalia uma única expressão que tem vários valores possíveis.

Sintaxe de linha única

Você pode usar a sintaxe de linha única para uma única condição com código para executar se for true. No entanto, a sintaxe de várias linhas fornece mais estrutura e flexibilidade e é mais fácil de ler, manter e depurar.

O que se segue à palavra-chave é examinado Then para determinar se uma instrução é uma linha Ifúnica. Se algo diferente de um comentário aparecer depois Then na mesma linha, a instrução será tratada como uma instrução de linha If única. Se Then estiver ausente, deve ser o início de uma linha Ifmúltipla ...Then...Else.

Na sintaxe de linha única, você pode ter várias instruções executadas como resultado de uma Ifdecisão ...Then Todas as instruções devem estar na mesma linha e separadas por dois pontos.

Exemplo de sintaxe de várias linhas

O exemplo a seguir ilustra o uso da sintaxe de várias linhas do If...Then...Else declaração.

'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.

Exemplo de sintaxe aninhada

O exemplo a seguir contém If...Then...Else declarações.

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.

Exemplo de sintaxe de linha única

O exemplo a seguir ilustra o uso da sintaxe de linha única.

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

Consulte também