GoTo – příkaz
Větve bezpodmínečně na zadaný řádek v postupu.
Syntaxe
GoTo line
Část
line
Povinný: Libovolný popisek řádku.
Poznámky
Příkaz GoTo
může větvet pouze na řádky v postupu, ve kterém se zobrazí. Řádek musí mít popisek řádku, na který GoTo
může odkazovat. Další informace naleznete v tématu Postupy: Příkazy popisků.
Poznámka:
GoTo
příkazy můžou ztěžovat čtení a údržbu kódu. Kdykoli je to možné, použijte místo toho řídicí strukturu. Další informace najdete v tématu Tok řízení.
Příkaz nelze použít GoTo
k větvení mimo ...For
Next
, For Each
...Next
, SyncLock
..., ...End SyncLock
, ... Try
Catch
...Finally
, With
...End With
, nebo Using
...End Using
konstrukce na popisek uvnitř.
Větvení a vyzkoušení konstrukcí
Try
Uvnitř ...Catch
...Finally
pro větvení s příkazem GoTo
platí následující pravidla.
Blokovat nebo oblast | Větvení odjinud | Větvení uvnitř |
---|---|---|
Blok Try |
Pouze z Catch bloku stejné konstrukce 1 |
Pouze mimo celou konstrukci |
Blok Catch |
Nikdy nepovoleno | Pouze mimo celou konstrukci, nebo do Try bloku stejné konstrukce 1 |
Blok Finally |
Nikdy nepovoleno | Nikdy nepovoleno |
1 Pokud jeden Try
...Catch
...Finally
konstrukce je vnořena do jiného bloku, Catch
může do bloku větvet Try
na vlastní úrovni vnoření, ale ne do žádného jiného Try
bloku. Vnořený Try
...Catch
...Finally
konstrukce musí být zcela obsažena v Try
Catch
nebo bloku konstrukce, ve které je vnořena.
Následující obrázek znázorňuje jednu Try
konstrukci vnořenou do jiné. Různé větve mezi bloky dvou konstrukcí jsou označeny jako platné nebo neplatné.
Příklad
Následující příklad používá příkaz GoTo
k větvení na popisky řádků v rámci procedury.
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