无条件地分支到过程中的指定行。
语法
GoTo line
部件
line
必填。 任何行标签。
注解
该 GoTo 语句只能分支到其出现的过程中的行。 该行必须具有可以引用的 GoTo 行标签。 有关详细信息,请参阅如何:为语句添加标签。
注释
GoTo 语句会使代码难以读取和维护。 尽可能改用控件结构。 有关详细信息,请参阅 Control Flow。
不能使用GoTo语句从 For...Next、For Each...Next、SyncLock...End SyncLock、... TryCatch...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 块。 嵌套...TryCatch...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