Istruzione GoTo

Rami in modo condizionale a una riga specificata in una routine.

Sintassi

GoTo line  

Parte

line
Obbligatorio. Qualsiasi etichetta di riga.

Commenti

L'istruzione GoTo può diramare solo le righe nella procedura in cui viene visualizzata. La riga deve avere un'etichetta di riga che GoTo può fare riferimento. Per altre informazioni, vedere Procedura: Istruzioni etichetta.

Nota

GoTo le istruzioni possono rendere difficile leggere e gestire il codice. Se possibile, usare invece una struttura di controllo. Per altre informazioni, vedere Flusso di controllo.

Non è possibile usare un'istruzione GoTo per ramo dall'esterno di un For..., ...Next, ...End SyncLockNext, ...CatchFor EachSyncLockTry ...Finally, With...o Using...End WithEnd Using costruzione di un'etichetta all'interno.

Diramazione e tentativi di costruzione

All'interno di un Try...Catch ...Finally costruzione, le regole seguenti si applicano al ramo con l'istruzione GoTo .

Blocca o area Branching in dall'esterno Diramazione dall'interno
Try Blocco Solo da un Catch blocco della stessa costruzione 1 Solo all'esterno dell'intera costruzione
Catch Blocco Mai consentito Solo all'esterno dell'intera costruzione, o al Try blocco della stessa costruzione 1
Finally Blocco Mai consentito Mai consentito

1 Se ...TryCatch ...Finally la costruzione viene annidata all'interno di un altro, un Catch blocco può ramo nel Try blocco a livello di annidamento, ma non in alcun altro Try blocco. Un annidato Try...Catch ...Finally la costruzione deve essere contenuta completamente in un Try blocco o Catch di costruzione all'interno della quale è annidato.

La figura seguente mostra una Try costruzione annidata all'interno di un'altra. Vari rami tra i blocchi delle due costruzioni sono indicati come validi o non validi.

Graphic diagram of branching in Try constructions

Esempio

Nell'esempio seguente viene usata l'istruzione GoTo per ramo per le etichette di riga in una routine.

    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

Vedi anche