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 ] ]
Links rápidos para código de exemplo
Este artigo inclui vários exemplos que ilustram os If
usos 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
, ElseIf
ou 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 ElseIf
instruções , Else
e 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 If
múltipla ...Then
...Else
.
Na sintaxe de linha única, você pode ter várias instruções executadas como resultado de uma If
decisã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