Declaração GoTo

Ramifica-se incondicionalmente para uma linha especificada em um procedimento.

Sintaxe

GoTo line  

Parte

line
Obrigatório. Qualquer rótulo de linha.

Observações

A GoTo instrução pode ramificar-se apenas para linhas no procedimento em que aparece. A linha deve ter um rótulo de linha que GoTo possa fazer referência. Para obter mais informações, consulte Como: Instruções de rótulo.

Nota

GoTo instruções podem tornar o código difícil de ler e manter. Sempre que possível, use uma estrutura de controle. Para obter mais informações, consulte Fluxo de controle.

Você não pode usar uma GoTo declaração para ramificar de fora de um For...Next, For Each...Next, SyncLock..., Try...End SyncLockCatch...Finally, With...End With, ou Using...End Using construção para uma etiqueta no interior.

Ramificações e Tentativas de Construções

Dentro de um Try...Catch...Finally construção, as seguintes regras se aplicam à ramificação com a GoTo declaração.

Bloco ou região Ramificação a partir do exterior Ramificação a partir de dentro
bloco Try Apenas de um Catch bloco da mesma construção 1 Só para fora de toda a construção
bloco Catch Nunca permitido Apenas para fora de toda a construção, ou para o Try bloco da mesma construção 1
bloco Finally Nunca permitido Nunca permitido

1 Se um Try...Catch...Finally A construção é aninhada dentro de outro, um Catch bloco pode se ramificar no Try bloco em seu próprio nível de nidificação, mas não em qualquer outro Try bloco. Um aninhado Try...Catch...Finally A construção deve estar completamente contida num Try ou Catch bloco da construção em que está aninhada.

A ilustração a seguir mostra uma Try construção aninhada dentro de outra. Vários ramos entre os blocos das duas construções são indicados como válidos ou inválidos.

Graphic diagram of branching in Try constructions

Exemplo

O exemplo a seguir usa a GoTo instrução para ramificar para alinhar rótulos em um procedimento.

    Sub GoToStatementDemo()
        Dim number As Integer = 1
        Dim sampleString As String
        ' Evaluate number and branch to appropriate label.
        If number = 1 Then GoTo Line1 Else GoTo Line2
Line1:
        sampleString = "Number equals 1"
        GoTo LastLine
Line2:
        ' The following statement never gets executed because number = 1.
        sampleString = "Number equals 2"
LastLine:
        ' Write "Number equals 1" in the Debug window.
        Debug.WriteLine(sampleString)
    End Sub

Consulte também