Compartilhar via


Estruturas de controle aninhadas

Você pode colocar instruções de controle dentro Outros controlar instruções, por exemplo um If...Then...Else Bloquear dentro de um For...Next loop. Uma demonstrativo de controle colocada dentro de outra demonstrativo de controle é considerada aninhados.

Níveis de aninhamento

Estruturas de controle em Visual Basic podem ser aninhadas para tantos níveis quanto desejar. É prática comum para facilitar a leitura estruturas aninhadas recuando o corpo de cada um deles.O editor do IDE (ambiente) de desenvolvimento integrado automaticamente faz isso.

No exemplo a seguir, o procedimento sumRows Adiciona juntos positivos elementos de cada linha da matriz.

Public Sub sumRows(ByVal a(,) As Double, ByRef r() As Double)
    Dim i, j As Integer
    For i = 0 To UBound(a, 1)
        r(i) = 0
        For j = 0 To UBound(a, 2)
            If a(i, j) > 0 Then
                r(i) = r(i) + a(i, j)
            End If
        Next j
    Next i
End Sub

No exemplo anterior, o primeiro Next demonstrativo fecha interno For loop e o último Next demonstrativo fecha o externo For loop.

Da mesma forma, no aninhados If instruções, o End If instruções se aplicam automaticamente para o mais próximo antes If demonstrativo. Aninhados Do loops de trabalhar no modo semelhante, com o interno Loop demonstrativo correspondente o interno Do demonstrativo.

Aninhamento de diferentes tipos de estruturas de controle

Você pode aninhar um tipo de estrutura de controle em outro tipo.O exemplo a seguir utiliza um With Bloquear dentro de um For Each loop e aninhados If bloqueia dentro do With bloco.

For Each ctl As System.Windows.Forms.Control In Me.Controls
    With ctl
        .BackColor = System.Drawing.Color.Yellow
        .ForeColor = System.Drawing.Color.Black
        If .CanFocus Then
            .Text = "Colors changed"
            If Not .Focus() Then
                ' Insert code to process failed focus.
            End If
        End If
    End With
Next ctl

Sobreposição de estruturas de controle

Não é possível sobrepor estruturas de controle.Isso significa que qualquer estrutura aninhada deve estar completamente contida dentro da estrutura mais interna do próxima.Por exemplo, a seguinte organização é inválido porque o For loop é encerrado antes interno With bloco termina.

Aninhamento inválido de para e com estruturas

The Visual Basic compilador detecta essas estruturas de controle sobrepostos e sinais de um erro em time de compilar.

Consulte também

Tarefas

Como: transferência controle fora de uma estrutura de controle

Conceitos

Estruturas de Decisão

Estruturas de loop

Outras estruturas de controle

Outros recursos

Fluxo de controle no Visual Basic