GoTo 语句
无条件地分支到过程中的指定行。
语法
GoTo line
组成部分
line
必需。 任何行标签。
注解
GoTo
语句只能分支到其出现的过程中的行。 该行必须具有 GoTo
可引用的行标签。 有关详细信息,请参阅如何:为语句添加标签。
注意
GoTo
语句可能会使代码难以读取和维护。 请尽量改用控件结构。 有关详细信息,请参阅 Control Flow。
不能使用 GoTo
语句从 For
...Next
、For Each
...Next
、SyncLock
...End SyncLock
、Try
...Catch
...Finally
、With
...End With
或 Using
...End Using
构造外部分支到内部标签。
分支和尝试构造
在 Try
...Catch
...Finally
构造中,以下规则适用于具有 GoTo
语句的分支。
块或区域 | 从外部进行分支 | 从内部进行分支 |
---|---|---|
Try 块 |
仅来自相同构造的 Catch 块 1 |
仅分支到整个构造外部 |
Catch 块 |
从不允许 | 仅分支到整个结构外部或者同一结构的 Try 块 1 |
Finally 块 |
从不允许 | 从不允许 |
1 如果一个 Try
...Catch
...Finally
结构嵌套在另一个结构中,则 Catch
块可以在其自己的嵌套级别分支到 Try
块中,但不能分支到任何其他 Try
块中。 嵌套的 Try
...Catch
...Finally
构造必须完全包含在它所嵌套的构造的 Try
或 Catch
块中。
下图显示了嵌套在另一个构造中的一个 Try
构造。 这两种构造的块之间的各个分支均表示为有效或无效。
示例
以下示例使用 GoTo
语句在过程中分支到行标签。
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