无条件地分支到过程中的指定行。
语法
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