0
    While True
Start:
        Continue While
        GoTo(Start)
    End While

注意:我知道 GoTo 在此示例中永远无法到达。我只是想知道使用 GoTo (X) 和 (Exit / Continue) 语句之间是否存在任何计算差异?我倾向于使用 GoTo 语句,即使 Continue 或 Exit 就足够了。这是不好的风格吗?我不经常在其他程序员的代码中看到 GoTo。

编辑:正如人们亲切地指出的那样,GoTo 不会在有条件的 while 循环中评估条件。这让我问以下两段代码是否会编译成完全相同的 CLR 代码:

Dim x as Integer = 0
While x < 5
    Continue
End While

    Dim x As Integer = 0
JumpPoint:
    If x < 5 Then
        GoTo JumpPoint
    End If
4

2 回答 2

3

有一点区别:对于Continue,重新评估 while 循环的条件,GoTo简单地从 Start 标签继续执行而不查看 while 条件。

Start:

    GoTo(Start)

将与

While True
    Continue While
End While

就“发生了什么”而言。但是一旦引入条件,GoTo就不会这样做。


对于您更新的问题:是的,再次有一个区别。第一个语句包括Continuewhich (基本上)与 GoTo. 但是,您的示例中未包含的情况是,由于在两者之间发生的任何操作而未调用Continueor的情况。GoTo如果Continue跳过,End While则将循环到下一个While评估并运行。

于 2012-09-27T13:59:27.340 回答
1

如果在循环条件下进行任何评估,则会有所不同,例如:

While var < 5

通过使用goto(start)的值var不会再次评估。

至于编码风格,没有人会阻止你使用goto但已经跳转continue到定义明确的代码点,在许多情况下exit降低了它的有用性。goto

于 2012-09-27T13:58:25.823 回答