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
答案 0 :(得分:3)
有一点不同:对于Continue
,重新评估while循环的条件,GoTo
simple从Start标签继续执行,而不查看while条件。
Start:
GoTo(Start)
与
相同While True
Continue While
End While
就“会发生什么”而言。但是一旦引入条件,GoTo
就不会这样做。
对于您的更新问题:是的,再次存在一个区别。第一个语句包括Continue
,它(基本上)与GoTo
相同。但是,您的示例中未包含的内容是Continue
或GoTo
未被调用,因为它们之间发生了任何操作。如果跳过Continue
,则End While
将循环到下一个While
评估并运行。
答案 1 :(得分:1)
如果在循环条件中进行任何评估,则存在差异,例如:
While var < 5
使用goto(start)
时,var
的值不会再次评估。
至于编码风格,没有人会阻止您使用goto
,但continue
和exit
已经跳转到明确定义的代码点,从而降低了goto
在许多方面的用途例。