Instrução If...Then... (Visual Basic)
Execute um grupo de instruções condicionalmente, 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 usos da instrução If
...Then
...Else
:
Partes
condition
Obrigatórios. Expressão. Deve avaliar para True
ou False
, ou para um tipo de dados implicitamente conversível para Boolean
.
Se a expressão for uma variável AnulávelBoolean
que seja avaliada como Nada, a condição será tratada como se a expressão fosse False
, e os blocos ElseIf
serão avaliados se existirem ou o bloco Else
será executado se existir.
Then
Obrigatório na sintaxe de linha única; opcional na sintaxe multilinha.
statements
Opcional. Uma ou mais instruções If
...Then
a seguir que são executadas se condition
for avaliado como True
.
elseifcondition
Obrigatório se ElseIf
estiver presente. Expressão. Deve avaliar para True
ou False
, ou para um tipo de dados implicitamente conversível para Boolean
.
elseifstatements
Opcional. Uma ou mais instruções ElseIf
...Then
a seguir que são executadas se elseifcondition
for avaliado como True
.
elsestatements
Opcional. Uma ou mais instruções executadas se nenhuma expressão condition
ou elseifcondition
anterior for avaliada como True
.
End If
Encerra a versão multilinha do bloco If
...Then
...Else
.
Comentários
Sintaxe multilinha
Quando uma instrução If
...Then
...Else
é encontrada, condition
é testada. Se condition
for True
, as instruções Then
a seguir serão executadas. Se condition
for False
, cada instrução ElseIf
(se houver alguma) será avaliada em ordem. Quando um True
elseifcondition
é encontrado, as instruções imediatamente após os ElseIf
associados são executadas. Se nenhuma elseifcondition
for avaliada como True
, ou se não houver instruções ElseIf
, as instruções Else
a seguir serão executadas. Depois de executar as instruções Then
, ElseIf
ou Else
a seguir, a execução continua com a instrução End If
a seguir.
As cláusulas ElseIf
e Else
são opcionais. Você pode ter quantas cláusulas ElseIf
quiser em uma instrução If
...Then
...Else
, mas nenhuma cláusula ElseIf
pode aparecer após uma cláusula Else
. As instruções If
...Then
...Else
podem ser aninhadas entre si.
Na sintaxe multilinha, a instrução If
deve ser a única instrução na primeira linha. As instruções ElseIf
, Else
e End If
podem ser precedidas apenas por um rótulo de linha. O bloco If
...Then
...Else
deve terminar com uma instrução End If
.
Dica
A instrução Select...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 a ser executada se for verdadeira. No entanto, a sintaxe de várias linhas fornece mais estrutura e flexibilidade e é mais fácil de ler, manter e depurar.
O que segue a palavra-chave Then
é examinado para determinar se uma instrução é uma If
de linha única. Se algo diferente de um comentário aparecer depois de Then
na mesma linha, a instrução será tratada como uma instrução If
de linha única. Se Then
estiver ausente, ela deverá ser o início de uma If
...Then
...Else
de várias linhas.
Na sintaxe de linha única, você pode ter várias instruções executadas como resultado de uma decisão If
...Then
. Todas as instruções precisam estar na mesma linha e ser separadas por dois-pontos.
Exemplo de sintaxe multilinha
O exemplo a seguir ilustra o uso da sintaxe multilinha da instrução 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.
Exemplo de sintaxe aninhada
O exemplo a seguir contém instruções If
...Then
...Else
aninhadas.
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