この章のテーマ §
ループ構文の流れを自由に制御するbreak文とcontinue文を学びます。
前提知識 §
Console.WriteLineメソッド, 変数の基礎, 条件演算子, int型, if文, while文
解説 §
while文やfor文などの繰り返しステートメント(文)を制御するステートメントが3つあります。
break/continue/returnです。
このうちreturnは、繰り返しだけでなくメソッドの実行そのものを終了させてしまうので、別扱いで説明します。
ここでは、break/continueを説明します。
break文は、繰り返しの実行をその場で終了させます。それ以後にどんな文が書いてあっても実行しません。通常はif文などを併用して、終わるべき時が来たら繰り返しを終了させるために使います。
continue文は、繰り返しをそこで打ち切って、次の周回を強制的に開始させます。それ以上実行しても意味がなく、次の周回をすぐ開始させたいときに使います。サンプルソースでは、変数xが32のときはその後に書かれた文を実行させないために使用されています。
罠の数々 §
- break文はswitch文の中でも使用されるが機能は異なっている
- ネストした繰り返しの中でbreak/continue文を使うと、最内周の繰り返しに対して作用する。外のループを脱出するつもりでbreak文を書かないように注意しよう
参考リンク §
break ステートメント
continue ステートメント
サンプルソース: kw_breakcontinue §
int x = 1;
while (true)
{
x = x * 2;
// xが32なら即座にループの次回に進む
if (x == 32) continue;
// xが100より大きいならループを脱出する
if (x > 100) break;
Console.WriteLine(x);
}
Console.WriteLine("Finished!");
実行結果 §
2
4
8
16
64
Finished!
リポジトリ §
https://github.com/autumn009/CSharpPrimer2
練習問題 §
以下のプログラムの実行結果を予測してみよう。
for (int i = 0; i < 3; i++)
{
if (i != 3) continue;
Console.WriteLine(i);
}
- 何も出力しない
- 0 1 2
- 0 1 2 3
- コンパイルエラー
- 実行時例外
[[解答]]