Faça... Instrução Loop (Visual Basic)

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

Termo Definição
Do Obrigatório. Inicia a definição do Do loop.
While Não pode ser administrado se Until for utilizado. Repita o loop até condition que seja False.
Until Não pode ser administrado se While for utilizado. Repita o loop até condition que seja True.
condition Opcional. Boolean expressão. Se condition for Nothing, o Visual Basic trata-o como False.
statements Opcional. Uma ou mais afirmaçõ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 satisfeita. Se você quiser repetir as instruções um determinado número de vezes, o ... Next Statement é geralmente uma escolha melhor.

Você pode usar um ou WhileUntil para 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 pode 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 avaliada como um valor de Tipo de Dados Booleano (True ou False). Isso inclui valores de outros tipos de dados, como tipos numéricos, que foram convertidos em Boolean.

Você pode aninhar Do loops colocando um loop dentro do outro. Você também pode aninhar diferentes tipos de estruturas de controle entre si. Para obter mais informações, consulte Estruturas de controle aninhadas.

Nota

A Do...Loop estrutura dá-lhe mais flexibilidade do que... Declaração End While porque permite que você decida se termina o loop quando condition deixa de ser True ou quando ele se torna Truepela primeira vez. 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…Looparquivo . Exit Do transfere o controle imediatamente para a instrução que se segue à Loop declaração.

Exit Do é frequentemente usado depois que alguma condição é avaliada, por exemplo, em uma If...Then...Else estrutura. Talvez você queira sair de um loop se detetar uma condição que torne desnecessário ou impossível continuar a iteração, como um valor incorreto ou uma solicitação de encerramento. Um uso é Exit Do testar uma condição que poderia causar um loop infinito, que é um loop que poderia executar um grande ou até 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…Looparquivo .

Quando usado em loops aninhados, Exit Do transfere Do 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 ciclo.

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 in the loop, no entanto, faz com que a Exit Do instrução pare o loop quando a variável index é 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

Consulte também