C#のループ完全ガイド:for、while、do-while、制御文
コードブロックを何度も繰り返し実行する必要がある場合があります。一般的に文は順次実行されます:関数の最初の文が最初に実行され、次に2番目、と続いていきます。
プログラミング言語には、より複雑な実行パスを可能にするさまざまな制御構造が用意されています。
ループステートメントを使用すると、文または文のグループを複数回実行できます。ほとんどのプログラミング言語におけるループステートメントの一般的な形式は以下の通りです。

C#のループタイプ
| No. | ループタイプと説明 |
|---|---|
| 1 | whileループ 与えられた条件が真である間、文または文のグループを繰り返す。ループ本体を実行する前に条件をテストする。 |
| 2 | forループ 文のシーケンスを複数回実行し、ループ変数を管理するコードを簡略化する。 |
| 3 | do...whileループ while文に似ているが、ループ本体の末尾で条件をテストする。 |
| 4 | ネストしたループ while、for、do...whileループの中に、さらに1つ以上のループを使用できる。 |
各ループの構文と例
forループ
for (初期化; 条件; イテレータ) {
// 繰り返す処理
}
// 例:1から10まで出力
for (int i = 1; i <= 10; i++) {
Console.WriteLine(i);
}
whileループ
while (条件) {
// 繰り返す処理
}
// 例:1から10まで出力
int i = 1;
while (i <= 10) {
Console.WriteLine(i);
i++;
}
do...whileループ
do {
// 繰り返す処理(最低1回は実行される)
} while (条件);
// 例:ユーザー入力の検証
int number;
do {
Console.Write("1-10の数字を入力: ");
number = Convert.ToInt32(Console.ReadLine());
} while (number < 1 || number > 10);
foreachループ(コレクション走査用)
foreach (要素型 変数名 in コレクション) {
// 各要素に対する処理
}
// 例:配列の走査
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int n in numbers) {
Console.WriteLine(n);
}
ループ制御ステートメント
ループ制御ステートメントは、通常の実行順序を変更します。スコープを抜けると、そのスコープで作成されたすべての自動オブジェクトが破棄されます。
| No. | 制御ステートメントと説明 |
|---|---|
| 1 | break文 ループまたはswitch文を終了し、ループまたはswitchの直後の文に実行を移す |
| 2 | continue文 ループの残りの本体をスキップし、即座に条件を再テストして次のイテレーションに進む |
breakの例
for (int i = 0; i < 10; i++) {
if (i == 5) break; // i=5でループ終了
Console.WriteLine(i); // 0,1,2,3,4 が出力
}
continueの例
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) continue; // 偶数はスキップ
Console.WriteLine(i); // 1,3,5,7,9 が出力
}
無限ループ
条件が決して偽にならない場合、ループは無限ループになります。forループは伝統的にこの目的で使用されます。forループを構成する3つの式はいずれも省略可能なので、条件式を空にすることで無限ループを作れます。
無限ループの例
using System;
namespace Loops {
class Program {
static void Main(string[] args) {
for (;;) {
Console.WriteLine("Hey! I am Trapped");
}
}
}
}
条件式が省略されている場合、trueとみなされます。初期化式とイテレータ式を持たせることもできますが、プログラマーは一般的にfor(;;)構文を使用して無限ループを明示します。
無限ループを抜けるには、ループ内でbreakを使用するか、外部からCtrl+Cで中断します。
ネストしたループの例
// 九九の表を作成
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
Console.Write($"{i * j,3}");
}
Console.WriteLine();
}
ベストプラクティス
- 繰り返し回数が決まっている場合は
forループを使用する - 条件ベースの繰り返し(回数未定)には
whileループを使用する - 最低1回は実行する必要がある場合は
do...whileを使用する - コレクションや配列の走査には
foreachを優先する(インデックス不要な場合) - 無限ループは意図的に作成し、明確な脱出条件(break等)を設ける
- ネストが3段階以上になる場合は、メソッド分割やLINQの検討をする
C言語
- 位相同期ループ(PLL):基礎、応用、設計ベストプラクティス
- C# switch 文をマスターする:構文、例、ベストプラクティス
- C# while 文と do-while 文をマスターする:構文、例、ベストプラクティス
- C# for ループをマスターする:構文、フロー、実践例
- C# break 文:使い方とタイミングを徹底解説
- C# continue 文をマスターする:ループ反復を効果的にスキップする方法
- C# foreach ループ:配列とコレクションを簡単に反復処理
- C++ forループ完全ガイド:ステップバイステップでマスター
- C++ break文完全ガイド:ループ脱出の仕組みと実例
- C言語の基本構文マスター:トークン、構造、セミコロン
- Pythonループ完全ガイド:for、while、break、continue、enumerate