Hatena::ブログ(Diary)

にっきちょう

Sunday, June 27, 2010

C#で多重ループを抜けようと思ったらgotoしないといけないのね

Perlで考えてると

OUTER:
while (1) {
    my $c = 0;
    INNER:
    while (1) {
        $c++;
        last OUTER if $c == 10;
    }
}

こんな感じにループ自体にラベルを付けておいて、条件を満たしたらlast LABELなんてやって多重ループから抜けるなんてことができたけど、C#だとこうはいかなくて、

while (true)
{
    int c = 0;
    while (true)
    {
        if (c == 10)
        {
            goto LOOPEND;
        }
    }
}
LOOPEND:
;

ループの後ろにラベルを付けて、そこにgoto LABELしないといけない*1C#の文法は割と好みなんだけど、この構文は感覚的にイマイチだなあ…… 私がやりたいのは(多重)ループを抜けたいのであって、ループの後にジャンプしたいわけじゃないのよね。

それぞれの例でインデントスタイルが違うのは、この言語ではこう書きたいという私の好みの問題。

*1C#は始めたばかりだから間違いがあったら指摘歓迎

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/seamlessbias/20100627/1277622484
リンク元