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 SyncLock
Catch
...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.
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