Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Repete um bloco de instruções enquanto uma Boolean
condição é True
ou até que a condição se torne True
.
Sintaxe
Do [ { While | Until } condition ]
[ statements ]
[ Continue Do ]
[ statements ]
[ Exit Do ]
[ statements ]
Loop
' -or-
Do
[ statements ]
[ Continue Do ]
[ statements ]
[ Exit Do ]
[ statements ]
Loop [ { While | Until } condition ]
Partes
Prazo | Definição |
---|---|
Do |
Obrigatório Inicia a definição do Do loop. |
While |
Não é possível receber se Until for usado. Repita o loop até condition que seja False . |
Until |
Não é possível receber se While for usado. Repita o loop até condition que seja True . |
condition |
Opcional.
Boolean expressão. Se condition for Nothing , o Visual Basic o trata como False . |
statements |
Opcional. Uma ou mais instruções que são repetidas enquanto, ou até, condition é True . |
Continue Do |
Opcional. Transfere o controle para a próxima iteração do Do loop. |
Exit Do |
Opcional. Transfere o controle para fora do Do loop. |
Loop |
Obrigatório Encerra a definição do Do loop. |
Observações
Use uma Do...Loop
estrutura quando quiser repetir um conjunto de instruções um número indefinido de vezes até que uma condição seja atendida. Se você quiser repetir as instruções um número definido de vezes, o For... A próxima instrução geralmente é uma opção melhor.
Você pode usar ou While
Until
especificar condition
, mas não ambos. Se você não der nenhum dos dois, o loop continuará até que um Exit
controle de transferência saia do loop.
Você pode testar condition
apenas uma vez, no início ou no final do loop. Se você testar condition
no início do loop (na Do
instrução), o loop poderá não ser executado nem uma vez. Se você testar no final do loop (na Loop
instrução), o loop sempre será executado pelo menos uma vez.
A condição geralmente resulta de uma comparação de dois valores, mas pode ser qualquer expressão que seja avaliada como um valor de tipo de dados booliano (True
ou False
). Isso inclui valores de outros tipos de dados, como tipos numéricos, que foram convertidos Boolean
em .
Você pode aninhar loops Do
colocando um loop dentro de outro. Você também pode aninhar diferentes tipos de estruturas de controle entre si. Para obter mais informações, confira Estruturas de controle aninhadas.
Observação
A Do...Loop
estrutura oferece mais flexibilidade do que o Tempo... Instrução End While porque permite que você decida se deseja encerrar o loop quando condition
parar de ser True
ou quando ele se torna True
. Ele também permite que você teste condition
no início ou no final do loop.
Sair do
A instrução Exit Do pode fornecer uma maneira alternativa de sair de um Do…Loop
.
Exit Do
transfere o controle imediatamente para a instrução que segue a Loop
instrução.
Exit Do
geralmente é usado depois que alguma condição é avaliada, por exemplo, em uma If...Then...Else
estrutura. Talvez você queira sair de um loop se detectar uma condição que torne desnecessário ou impossível continuar iterando, como um valor incorreto ou uma solicitação de encerramento. Um uso é Exit Do
testar uma condição que possa causar um loop sem fim, que é um loop que pode executar um grande ou até mesmo infinito número de vezes. Você pode usar Exit Do
para escapar do loop.
Você pode incluir qualquer número de Exit Do
instruções em qualquer lugar em um Do…Loop
.
Quando usado em loops aninhados Do
, Exit Do
transfere o controle para fora do loop mais interno e para o próximo nível mais alto de aninhamento.
Exemplo 1
No exemplo a seguir, as instruções no loop continuam a ser executadas até que a index
variável seja maior que 10. A Until
cláusula está no final do loop.
Dim index As Integer = 0
Do
Debug.Write(index.ToString & " ")
index += 1
Loop Until index > 10
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Exemplo 2
O exemplo a seguir usa uma While
cláusula em vez de uma Until
cláusula e condition
é testado no início do loop em vez de no final.
Dim index As Integer = 0
Do While index <= 10
Debug.Write(index.ToString & " ")
index += 1
Loop
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Exemplo 3
No exemplo a seguir, condition
interrompe o loop quando a index
variável é maior que 100. A If
instrução no loop, no entanto, faz com que a Exit Do
instrução interrompa o loop quando a variável de índice for maior que 10.
Dim index As Integer = 0
Do While index <= 100
If index > 10 Then
Exit Do
End If
Debug.Write(index.ToString & " ")
index += 1
Loop
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Exemplo 4
O exemplo a seguir lê todas as linhas em um arquivo de texto. O OpenText método abre o arquivo e retorna um StreamReader que lê os caracteres.
Do...Loop
Na condição, o Peek método do StreamReader
determina se há caracteres adicionais.
Private Sub ShowText(ByVal textFilePath As String)
If System.IO.File.Exists(textFilePath) = False Then
Debug.WriteLine("File Not Found: " & textFilePath)
Else
Dim sr As System.IO.StreamReader = System.IO.File.OpenText(textFilePath)
Do While sr.Peek() >= 0
Debug.WriteLine(sr.ReadLine())
Loop
sr.Close()
End If
End Sub