GoTo — Instrukcja
Rozgałęzienia bezwarunkowo do określonej linii w procedurze.
Składnia
GoTo line
Element
line
Wymagany. Dowolna etykieta wiersza.
Uwagi
Instrukcja GoTo
może rozgałęzić tylko do wierszy w procedurze, w której się pojawia. Wiersz musi mieć etykietę wiersza, która GoTo
może się odwoływać. Aby uzyskać więcej informacji, zobacz Instrukcje: Instrukcje etykiet.
Uwaga
GoTo
instrukcje mogą utrudniać odczytywanie i konserwację kodu. Jeśli to możliwe, należy zamiast tego użyć struktury sterującej. Aby uzyskać więcej informacji, zobacz Przepływ sterowania.
Nie można użyć instrukcji , aby rozgałęzić GoTo
się spoza ...Next
For
, ...Next
, For Each
SyncLock
..., ...End SyncLock
Catch
Try
...Finally
, With
...End With
, lub Using
...End Using
konstrukcja do etykiety wewnątrz.
Rozgałęzianie i testowanie konstrukcji
W ...Try
Catch
...Finally
konstrukcja, następujące zasady mają zastosowanie do rozgałęziania za pomocą instrukcji GoTo
.
Blokuj lub region | Rozgałęzianie z zewnątrz | Rozgałęzianie od wewnątrz |
---|---|---|
Blok Try |
Tylko z Catch bloku tej samej konstrukcji 1 |
Tylko na zewnątrz całej konstrukcji |
Blok Catch |
Nigdy nie jest dozwolone | Tylko na zewnątrz całej konstrukcji lub Try do bloku tej samej konstrukcji 1 |
Blok Finally |
Nigdy nie jest dozwolone | Nigdy nie jest dozwolone |
1 Jeśli jeden Try
...Catch
...Finally
konstrukcja jest zagnieżdżona w innym, blok może rozgałęzić Catch
się w Try
bloku na własnym poziomie zagnieżdżania, ale nie w żadnym innym Try
bloku. Zagnieżdżone Try
...Catch
...Finally
konstrukcja musi być całkowicie zawarta w Try
bloku lub Catch
konstrukcji, w której jest zagnieżdżona.
Poniższa ilustracja przedstawia jedną Try
konstrukcję zagnieżdżona w innym. Różne gałęzie między blokami dwóch konstrukcji są wskazywane jako prawidłowe lub nieprawidłowe.
Przykład
W poniższym przykładzie użyto instrukcji GoTo
, aby rozgałęzić etykiety wierszy w procedurze.
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