这段代码中的Continue和GoTo Start有什么区别吗?

时间:2012-09-27 13:56:12

标签: .net vb.net syntax coding-style continue

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

注意:我知道GoTo在这个例子中永远不会触及。我只是想知道使用GoTo(X)和(退出/继续)语句之间是否存在任何计算差异?我倾向于使用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

2 个答案:

答案 0 :(得分:3)

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

Start:

    GoTo(Start)

相同
While True
    Continue While
End While

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


对于您的更新问题:是的,再次存在一个区别。第一个语句包括Continue,它(基本上)与GoTo相同。但是,您的示例中未包含的内容是ContinueGoTo未被调用,因为它们之间发生了任何操作。如果跳过Continue,则End While将循环到下一个While评估并运行。

答案 1 :(得分:1)

如果在循环条件中进行任何评估,则存在差异,例如:

While var < 5

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

至于编码风格,没有人会阻止您使用goto,但continueexit已经跳转到明确定义的代码点,从而降低了goto在许多方面的用途例。