35

一部のJavaコードをC#に変換していますが、「break」ステートメントというラベルの付いたものがいくつか見つかりました(例)。

label1:
    while (somethingA) {
       ...
        while (somethingB) {
            if (condition) {
                break label1;
            }
        }
     }

C#に同等のものがありますか(現在の読み取りはそうではないことを示唆しています)、そうでない場合は、各ループの終わりで中断するかどうかを示すブールフラグを持つ以外の変換はありません(例)

bool label1 = false;
while (somethingA)
{
   ...
    while (somethingB)
    {
        if (condition)
        {
            label1 = true;
            break;
        }
    }
    if (label1)
    {
        break;
    }
}
// breaks to here

それほど邪悪ではないように見えるので、なぜC#にこれがないのか興味があります。

4

1 に答える 1

45

gotoラベルに直接ジャンプするために使用できます。

while (somethingA)
{
    // ...
    while (somethingB)
    {
        if (condition)
        {
            goto label1;
        }
    }
}
label1:
   // ...

Cのような言語でgotoは、ブール変数を追跡し、各ループの最後でそれらを繰り返しチェックするのとは対照的に、ネストされたループを壊すために多くの場合よりクリーンになります。

于 2009-10-10T14:57:22.153 に答える