2012-09-27 41 views
0
While True 
Start: 
     Continue While 
     GoTo(Start) 
    End While 

注意:我知道GoTo永遠不會在這個例子中達到。我只是想知道使用GoTo(X)和(Exit/Continue)語句之間是否存在計算差異?我傾向於使用GoTo語句,即使在Continue或Exit就足夠的情況下也是如此。這是不好的風格?我沒有經常在其他程序員的代碼中看到GoTo。在此代碼中,Continue和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

你是什麼意思的「計算」? – BoltClock

+1

GoTo通常被認爲是不好的做法,因爲它很容易導致很難遵循的代碼。 – cadrell0

+0

奇數?這就是我喜歡GoTo的原因,因爲我認爲它更容易遵循。至少如果你使用了好的LabelNames。 –

回答

3

有一點區別:對於Continue,重新評估while循環的條件,GoTo簡單地繼續從開始標籤執行而不看while條件。

Start: 

    GoTo(Start) 

將是相同

While True 
    Continue While 
End While 

在 「發生了什麼」 條款。但是一旦引入條件,GoTo就不會這樣做。


爲您更新的問題:是的,有一個區別,再次。第一個聲明包括Continue,它與GoTo確實(基本上)相同。但是你的例子中沒有包含的情況是ContinueGoTo由於發生在兩者之間的任何操作而未被調用。如果跳過Continue,則End While將循環到下一個While評估並運行。

+0

我正在編輯我的問題與另一個相關的問題。 –

+0

@vanattab:* dont'*用另一個問題編輯你的問題。改爲發表第二個問題。 –

1

有一個區別,如果任何評價在循環條件進行,例如爲:

While var < 5 

通過使用goto(start)var值不再次進行評價。

至於編碼風格,沒有人會阻止你使用gotocontinueexit已經跳轉到明確定義的代碼點,減少在很多情況下goto實用性。

相關問題