GoTo 语句

无条件地跳转到过程内的指定行。

GoTo line

组成部分

  • line
    必选。 任何行标签。

备注

GoTo 语句只能跳转到它所在过程内的行。 该行必须有 GoTo 可以引用的行标签。 有关更多信息,请参见如何:标记语句 (Visual Basic)

备注

GoTo 语句使代码的阅读和维护变得更加困难。应该尽可能使用控制结构。有关更多信息,请参见 控制流 (Visual Basic)

不能使用 GoTo 语句从 For...Next、For Each...Next、SyncLock...End SyncLock、Try...Catch...Finally、With...End With 或 Using...End Using 构造外部分支到构造内部的标签。

分支与 Try 构造

在 Try...Catch...Finally 构造中,下列规则适用于通过 GoTo 语句执行的分支。

块或区域

从外向内分支

从内向外分支

Try 块

只能从同一个构造 1 的 Catch 块分支

只能跳转到整个构造外部

Catch 块

不允许

只能跳转到整个构造外部,或跳转到同一个构造 1 的 Try 块

Finally 块

不允许

不允许

1 如果一个 Try...Catch...Finally 构造嵌套在另一个构造中,则 Catch 块可以分支到它自己的嵌套级别上的 Try 块中,但不能分支到任何其他 Try 块中。 嵌套的 Try...Catch...Finally 构造必须完全包含在其所嵌入构造的 Try 或 Catch 块中。

下图显示一个 Try 构造,它嵌套在另一个 Try 构造中。 这两个构造的块之间的各种不同分支被标示为有效或无效。

Try 构造中的有效和无效分支

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

请参见

参考

Do...Loop 语句 (Visual Basic)

For...Next 语句 (Visual Basic)

For Each...Next 语句 (Visual Basic)

If...Then...Else 语句 (Visual Basic)

Select...Case 语句 (Visual Basic)

Try...Catch...Finally 语句 (Visual Basic)

While...End While 语句 (Visual Basic)

With...End With 语句 (Visual Basic)