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

注: この例では、GoTo が到達しないことはわかっています。GoTo (X) ステートメントと (Exit / Continue) ステートメントの使用に計算上の違いがあるかどうか疑問に思っていますか? Continue または Exit で十分な場合でも、GoTo ステートメントを使用する傾向があります。これはスタイルが悪いのでしょうか?他のプログラマーのコードで GoTo を目にすることはあまりありません。

編集:人々が親切に指摘したように、GoTo は条件付き while ループで条件を評価しません。次の 2 つのコードは、まったく同じ 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

少し違いが 1 つあります。 forContinueでは、while ループの条件が再評価され、GoTo単純に while 条件を見ずに Start ラベルから実行を継続します。

Start:

    GoTo(Start)

と同じだろう

While True
    Continue While
End While

「どうなるか」という意味で。しかし、条件が導入されるとすぐに、GoToは同じことをしません。


更新された質問について: はい、ここでも 1 つの違いがあります。最初のステートメントには、Continue(基本的に) と同じことを行う が 含まれていGoToます。しかし、あなたの例に含まれていないのは、間に行われた操作のためにContinueorが呼び出されない場合です。がスキップされたGoTo場合、 は次の評価にループして実行されます。ContinueEnd WhileWhile

于 2012-09-27T13:59:27.340 に答える
1

次のように、ループ条件で評価が行われる場合は違いがあります。

While var < 5

goto(start)の値を使用すると、var再評価されません。

コーディング スタイルに関しては、誰もあなたの使用を止めることはありませんgotocontinue、すでに明確に定義されたコード ポイントにジャンプしているため、多くの場合exitの有用性が低下しています。goto

于 2012-09-27T13:58:25.823 に答える