【C#入門】繰り返しの流れを途中で変える処理について分かりやすいサンプルコードで徹底解説②
今回は繰り返しの流れを途中で変える処理の続きです。
今回はgoto文について紹介します。
goto文
プログラムの制御をラベル付き文に直接移動するには、goto文を使用します。
の文でむやみにプログラムの流れを飛ば、 コードが複雑に絡み合ったいわゆる「スパゲッ
一見便利そうに見える制御文ですが、goto文でむやみにプログラムの流れを飛ばすと
制御構造がわかりづらくなりコードが複雑に絡みあっtら言わゆる「スパゲティプログラム」
になってしまいます。そのため、使わないほうがいいといわれている制御文です。
けれども、goto文を使ったほうがすっきりと記述できる例も存在します。
それは多重ループから一気に抜けたい場合です。break文で抜けられるのはそのbreak文が含まれるループのみです。
ですから、多重ループから一気に抜け出したい場合にはgoto文を使うとすっきり記述できます。
しかし、あくまで特殊な例に限りgoto文を使うようにし、多用は避けましょう。
● goto文
1 2 3 4 5 6 |
処理1 goto ラベル名; 処理2 ラベル名: 処理3 |
例題を見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
static void Main(string[] args) { int i,j = 0, k = 0, no = 1; for(i = 1; i <= 10; i++) { for (j = 1; j <= 10; j++) { for(k = 1; k <= 10;k++) { no += (i + j + k); if (no >= 2000) goto OUT; //ループを一気に脱出 } } } OUT: Console.WriteLine($"i:{i}j:{5} k:{k} no:{no}"); } |
gotoの実行結果
コラム
無限ループ
無限ループとは、その名のとおり永遠に終わることのない繰り返し処理ですが、
わざと無限ループを書く場合があります。当然、そのままでは次の処理に 進めませんので、
特定の条件でループをbreak文で飛び出すようにします。
無限ループは、while文かfor文を使って書きます。
do〜whileは繰り返しの 最後まで無限ループであることがわからないので、通常は使われません。
while文の無限ループ
1 2 3 4 5 6 7 8 |
while (true) { 処理1 if(条件式) break; 処理2 } |
継続条件式にtrueを記述するので、falseになって繰り返しを終了することがなく、
無限ループになります。
for文の無限ループ
1 2 3 4 5 6 7 |
for(;;) { 処理1 if(条件式) break; 処理2 } |
カウンタ変数の初期化、ループの継続条件式、カウンタ変数の更新のすべてが
ないため無限ループになります。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。