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
しないといけない*1。C#の文法は割と好みなんだけど、この構文は感覚的にイマイチだなあ…… 私がやりたいのは(多重)ループを抜けたいのであって、ループの後にジャンプしたいわけじゃないのよね。
それぞれの例でインデントスタイルが違うのは、この言語ではこう書きたいという私の好みの問題。