C#のwhile文を完全理解|基本構文・無限ループ・breakまで初心者向けに解説
はじめに
C#で同じ処理を何度も繰り返したいときに使う代表的な構文が、while文です。英語では「C# while loop」と検索されることも多く、C#の繰り返し処理を学ぶうえで基本となる重要な文法です。
たとえば、「1から10までの数字を順番に表示する」「ユーザーが特定の文字を入力するまで処理を続ける」「条件を満たすまで同じ処理を繰り返す」といった場面でwhile文はよく使われます。
この記事では、C#のwhile文について、基本構文から無限ループ、break、continue、do-while文との違いまで、初心者にもわかりやすく解説します。
1. C#のwhile文とは?繰り返し処理を行う基本構文
C#のwhile文は、指定した条件が成り立っている間、同じ処理を繰り返し実行するための構文です。
プログラムでは、同じような処理を何度も書くよりも、繰り返し処理を使ったほうがコードを短く、読みやすくできます。
1-1. while文の役割と使う場面
while文の役割は、「条件がtrueの間だけ処理を繰り返す」ことです。
たとえば、次のような場面で使われます。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
count++;
}
このコードでは、countが5以下の間、数字を画面に表示し続けます。
while文は、繰り返す回数が最初からはっきり決まっていない場合に特に便利です。たとえば、「ユーザーが終了を選ぶまで処理を続ける」「入力値が正しくなるまで再入力させる」といった処理に向いています。
1-2. while文の基本構文
C#のwhile文の基本構文は次のとおりです。
C#while (条件式)
{
繰り返したい処理;
}
条件式には、結果がtrueまたはfalseになる式を書きます。
たとえば、次のように書きます。
C#int number = 1;
while (number <= 3)
{
Console.WriteLine("numberの値は " + number);
number++;
}
この場合、number <= 3がtrueの間だけ、{ }の中の処理が繰り返されます。
1-3. 条件式がtrueの間だけ処理が繰り返される仕組み
while文は、まず条件式を確認します。
条件式がtrueであれば、ブロック内の処理を実行します。処理が終わると、再び条件式を確認します。そして、またtrueであれば処理を繰り返します。
条件式がfalseになった時点で、while文は終了します。
C#int i = 1;
while (i <= 3)
{
Console.WriteLine(i);
i++;
}
Console.WriteLine("終了しました");
実行結果は次のようになります。
1
2
3
終了しました
iが4になった時点で、i <= 3はfalseになります。そのため、while文の中の処理は実行されず、次の処理へ進みます。
1-4. while文でできることの具体例
while文では、次のような処理を作ることができます。
C#int total = 0;
int number = 1;
while (number <= 5)
{
total += number;
number++;
}
Console.WriteLine(total);
このコードでは、1から5までの合計を計算しています。
実行結果は次のとおりです。
15
このように、C#のwhile文は、数値のカウント、合計計算、入力チェック、メニュー処理など、さまざまな場面で使えます。
2. C#のwhile文の基本的な書き方
C#のwhile文を正しく使うには、変数の初期化、条件式、更新処理の3つを意識することが大切です。
この3つのどれかが抜けると、正しく動かなかったり、無限ループになったりします。
2-1. カウンターを使ったwhile文のサンプルコード
まずは、カウンター変数を使った基本的なwhile文を見てみましょう。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
count++;
}
実行結果は次のとおりです。
1
2
3
4
5
このコードでは、countの値を1から始め、5以下の間だけ繰り返しています。
2-2. 変数の初期化・条件式・更新処理の流れ
while文では、次の流れを理解することが重要です。
C#int count = 1; // 変数の初期化
while (count <= 5) // 条件式
{
Console.WriteLine(count);
count++; // 更新処理
}
まず、countに1を代入します。
次に、count <= 5がtrueかどうかを確認します。trueであれば、Console.WriteLine(count);が実行されます。
最後に、count++でcountの値を1増やします。
この流れを繰り返し、countが6になると条件式がfalseになるため、while文が終了します。
2-3. 実行結果から処理の順番を理解する
次のコードで、処理の順番を確認してみましょう。
C#int i = 1;
while (i <= 3)
{
Console.WriteLine("現在のi: " + i);
i++;
}
Console.WriteLine("ループ終了後のi: " + i);
実行結果は次のようになります。
現在のi: 1
現在のi: 2
現在のi: 3
ループ終了後のi: 4
iが3のときは条件式がtrueなので処理されます。その後、i++によって4になります。
次に条件式を確認したとき、4 <= 3はfalseなので、while文は終了します。
2-4. 初心者が間違えやすい書き方
初心者がよく間違えるのは、更新処理を書き忘れることです。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
}
このコードでは、countの値がずっと1のままです。そのため、count <= 5が常にtrueになり、無限ループしてしまいます。
正しくは、次のようにcount++を書きます。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
count++;
}
while文では、条件式に関係する変数が、ループ内で変化しているかを必ず確認しましょう。
3. while文とfor文の違い
C#には、while文のほかにfor文という繰り返し処理もあります。
どちらも繰り返し処理を行うための構文ですが、使いやすい場面が少し異なります。
3-1. while文とfor文の構文の違い
while文は、条件式を中心に書く構文です。
C#int i = 1;
while (i <= 5)
{
Console.WriteLine(i);
i++;
}
一方、for文は、初期化、条件式、更新処理を1行にまとめて書けます。
C#for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
どちらも実行結果は同じです。
1
2
3
4
5
for文は、カウンターを使って決まった回数だけ繰り返す場合に読みやすくなります。
3-2. while文が向いているケース
while文は、繰り返す回数が事前にはっきり決まっていない場合に向いています。
たとえば、ユーザーが正しい値を入力するまで繰り返す処理です。
C#string input = "";
while (input != "exit")
{
Console.WriteLine("終了するには exit と入力してください");
input = Console.ReadLine();
}
このコードでは、ユーザーがexitと入力するまで処理が続きます。
何回繰り返すかは、実行してみないとわかりません。このような場合は、while文が使いやすいです。
3-3. for文が向いているケース
for文は、繰り返す回数が決まっている場合に向いています。
C#for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
このコードは、10回繰り返すことが明確です。
配列やリストの要素を順番に処理する場合も、for文はよく使われます。
C#string[] names = { "佐藤", "鈴木", "田中" };
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}
3-4. どちらを使うべきか迷ったときの判断基準
while文とfor文のどちらを使うべきか迷ったときは、次のように考えるとよいです。
繰り返し回数が決まっているならfor文、条件を満たすまで繰り返したいならwhile文です。
たとえば、「10回繰り返す」ならfor文が自然です。
一方、「ユーザーが終了を選ぶまで続ける」「条件が満たされるまで処理する」ならwhile文が自然です。
C#のwhile loopは、終了条件を柔軟に書ける点が特徴です。
4. C#のwhile文で無限ループを書く方法
while文では、条件式を常にtrueにすることで、意図的に無限ループを書くことができます。
ただし、無限ループは便利な反面、止め方を間違えるとプログラムが終了しなくなるため注意が必要です。
4-1. 無限ループとは何か
無限ループとは、処理が終わらずにずっと繰り返される状態のことです。
たとえば、次のコードは無限ループになります。
C#while (true)
{
Console.WriteLine("繰り返し中");
}
条件式が常にtrueなので、while文は終了しません。
4-2. while(true)の基本構文
C#で無限ループを書く場合、よく使われるのがwhile (true)です。
C#while (true)
{
// 繰り返したい処理
}
ただし、このままでは永遠に処理が続きます。
実際には、break文を使って特定の条件でループを終了することが多いです。
C#while (true)
{
Console.WriteLine("終了するには exit と入力してください");
string input = Console.ReadLine();
if (input == "exit")
{
break;
}
}
このコードでは、ユーザーがexitと入力したときにbreakで無限ループを抜けます。
4-3. 無限ループが使われる場面
無限ループは、次のような場面で使われます。
アプリケーションのメニューを表示し続ける処理、ゲームのメインループ、サーバーがリクエストを待ち続ける処理、ユーザーが終了を選ぶまで繰り返す処理などです。
たとえば、簡単なメニュー処理は次のように書けます。
C#while (true)
{
Console.WriteLine("1: 開始");
Console.WriteLine("2: 設定");
Console.WriteLine("0: 終了");
string choice = Console.ReadLine();
if (choice == "0")
{
break;
}
Console.WriteLine("選択された番号: " + choice);
}
このように、ユーザーが明示的に終了を選ぶまで処理を続けたい場合に、while (true)はよく使われます。
4-4. 無限ループを書くときの注意点
無限ループを書くときは、必ず終了条件を用意しましょう。
C#while (true)
{
string input = Console.ReadLine();
if (input == "end")
{
break;
}
}
breakや条件判定がない無限ループは、CPUに負荷をかけたり、プログラムが停止できなくなったりする原因になります。
また、ループの中で待機処理が必要な場合は、必要に応じてThread.Sleepなどを使うこともあります。ただし、初心者のうちは、まずbreakで安全に終了できる構造を理解することが大切です。
4-5. 無限ループを止められない原因と対処法
無限ループを止められない原因として多いのは、終了条件が書かれていないことです。
C#while (true)
{
Console.WriteLine("終了できません");
}
このようなコードは、プログラムが延々と動き続けます。
Visual Studioやコンソールで実行している場合は、停止ボタンやCtrl + Cで実行を止められることがあります。
ただし、根本的な対処法は、ループ内に終了条件を正しく書くことです。
C#int count = 0;
while (true)
{
Console.WriteLine(count);
count++;
if (count >= 5)
{
break;
}
}
このコードでは、countが5以上になったらループを終了します。
5. while文をbreakで終了する方法
break文は、while文を途中で終了したいときに使います。
条件式がまだtrueであっても、breakが実行されると、その時点でループを抜けます。
5-1. break文の役割
break文の役割は、現在のループ処理を終了することです。
C#while (true)
{
break;
}
この場合、while (true)で無限ループになっていても、すぐにbreakが実行されるため、ループは終了します。
5-2. 条件を満たしたらwhile文を抜けるサンプルコード
次のコードでは、countが3になったらwhile文を終了します。
C#int count = 1;
while (count <= 10)
{
Console.WriteLine(count);
if (count == 3)
{
break;
}
count++;
}
実行結果は次のとおりです。
1
2
3
本来であればcount <= 10の間は繰り返されますが、count == 3のときにbreakが実行されるため、ループが終了します。
5-3. 無限ループとbreakを組み合わせる使い方
while (true)とbreakは、よく組み合わせて使われます。
C#while (true)
{
Console.WriteLine("数字を入力してください。0で終了します。");
int number = int.Parse(Console.ReadLine());
if (number == 0)
{
break;
}
Console.WriteLine("入力された数字: " + number);
}
このコードでは、ユーザーが0を入力するまで処理が繰り返されます。
0が入力されたらbreakでループを終了します。
5-4. breakを使うときの注意点
breakは便利ですが、使いすぎると処理の流れがわかりにくくなることがあります。
特に、複数の条件で何度もbreakを書くと、「どの条件でループが終わるのか」が読み取りにくくなります。
C#while (true)
{
if (条件1)
{
break;
}
if (条件2)
{
break;
}
if (条件3)
{
break;
}
}
このような場合は、終了条件を整理したり、メソッドに分けたりすると読みやすくなります。
breakを使うときは、「なぜここでループを抜けるのか」がわかるように書くことが大切です。
6. while文でcontinueを使う方法
continue文は、現在の繰り返し処理を途中でスキップし、次の繰り返しに進むための構文です。
breakはループ自体を終了しますが、continueはループを終了せず、次の処理に進みます。
6-1. continue文の役割
continue文の役割は、ループ内の残りの処理をスキップすることです。
C#int count = 0;
while (count < 5)
{
count++;
if (count == 3)
{
continue;
}
Console.WriteLine(count);
}
このコードでは、countが3のときだけConsole.WriteLine(count);が実行されません。
6-2. 特定の処理だけスキップするサンプルコード
次のコードでは、偶数だけをスキップして、奇数だけを表示します。
C#int number = 0;
while (number < 10)
{
number++;
if (number % 2 == 0)
{
continue;
}
Console.WriteLine(number);
}
実行結果は次のとおりです。
1
3
5
7
9
number % 2 == 0は、numberが偶数かどうかを判定しています。
偶数の場合はcontinueが実行されるため、その下のConsole.WriteLine(number);はスキップされます。
6-3. breakとの違い
breakとcontinueの違いは、ループを終了するかどうかです。
breakは、ループを完全に終了します。
C#int i = 0;
while (i < 5)
{
i++;
if (i == 3)
{
break;
}
Console.WriteLine(i);
}
実行結果は次のようになります。
1
2
一方、continueは、その回の処理だけをスキップして、次の繰り返しに進みます。
C#int i = 0;
while (i < 5)
{
i++;
if (i == 3)
{
continue;
}
Console.WriteLine(i);
}
実行結果は次のようになります。
1
2
4
5
6-4. continueで無限ループにならないための注意点
continueを使うときは、更新処理の位置に注意が必要です。
次のコードは危険です。
C#int i = 0;
while (i < 5)
{
if (i == 2)
{
continue;
}
Console.WriteLine(i);
i++;
}
このコードでは、iが2になったときにcontinueが実行されます。しかし、i++が実行されないため、iはずっと2のままです。
その結果、無限ループになります。
正しくは、次のようにcontinueより前で更新処理を行います。
C#int i = 0;
while (i < 5)
{
i++;
if (i == 2)
{
continue;
}
Console.WriteLine(i);
}
continueを書くときは、条件に関係する変数が確実に更新されるかを必ず確認しましょう。
7. while文とdo-while文の違い
C#には、while文に似た構文としてdo-while文があります。
どちらも条件に応じて繰り返し処理を行いますが、条件を判定するタイミングが異なります。
7-1. do-while文とは
do-while文は、処理を実行したあとに条件式を確認する繰り返し構文です。
基本構文は次のとおりです。
C#do
{
繰り返したい処理;
}
while (条件式);
while文と違い、最後にセミコロン;が必要です。
7-2. while文との実行タイミングの違い
while文は、最初に条件式を確認します。
C#int i = 10;
while (i < 5)
{
Console.WriteLine(i);
}
このコードでは、最初からi < 5がfalseなので、処理は1回も実行されません。
一方、do-while文は、先に処理を実行してから条件式を確認します。
C#int i = 10;
do
{
Console.WriteLine(i);
}
while (i < 5);
このコードでは、条件式はfalseですが、処理は最低1回実行されます。
実行結果は次のとおりです。
10
7-3. 最低1回は処理したい場合の使い方
do-while文は、最低1回は処理したい場合に便利です。
たとえば、ユーザー入力を必ず1回受け取りたい場合です。
C#string input;
do
{
Console.WriteLine("終了するには exit と入力してください");
input = Console.ReadLine();
}
while (input != "exit");
このコードでは、最初に必ず入力を受け取ります。その後、入力内容がexitでなければ処理を繰り返します。
7-4. while文とdo-while文の使い分け
最初に条件を確認したい場合はwhile文を使います。
C#while (条件式)
{
処理;
}
最低1回は処理したい場合はdo-while文を使います。
C#do
{
処理;
}
while (条件式);
たとえば、処理を実行してよいか事前に判断したい場合はwhile文が向いています。
一方、入力受付やメニュー表示のように、まず一度表示・実行してから続けるか判断したい場合はdo-while文が向いています。
8. C#のwhile文でよくあるエラーと原因
C#のwhile文はシンプルな構文ですが、初心者がつまずきやすいポイントもあります。
特に、無限ループ、更新処理の書き忘れ、比較演算子のミス、変数のスコープには注意が必要です。
8-1. 条件式がずっとtrueになり無限ループする
条件式がずっとtrueのままだと、while文は終了しません。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
}
このコードでは、countの値が変化しないため、count <= 5がずっとtrueになります。
正しくは、次のように更新処理を書きます。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
count++;
}
8-2. 変数の更新処理を書き忘れる
while文では、条件式に使っている変数をループ内で更新することが多いです。
C#int i = 0;
while (i < 3)
{
Console.WriteLine(i);
i++;
}
i++を書き忘れると、iの値が変わらず、ループが終わらなくなります。
特に、continueを使う場合は、更新処理がスキップされないように注意しましょう。
8-3. 条件式の比較演算子を間違える
比較演算子の間違いもよくあります。
C#int i = 1;
while (i < 5)
{
Console.WriteLine(i);
i++;
}
このコードでは、表示されるのは1から4までです。
1
2
3
4
5も表示したい場合は、<ではなく<=を使います。
C#int i = 1;
while (i <= 5)
{
Console.WriteLine(i);
i++;
}
比較演算子を1つ間違えるだけで、繰り返し回数が変わってしまいます。
8-4. スコープの理解不足で変数が使えない
C#では、{ }の中で宣言した変数は、そのブロックの中でしか使えません。
C#while (true)
{
int number = 10;
break;
}
Console.WriteLine(number);
このコードはエラーになります。
numberはwhile文の中で宣言されているため、while文の外では使えません。
外でも使いたい場合は、while文の前で宣言します。
C#int number = 0;
while (true)
{
number = 10;
break;
}
Console.WriteLine(number);
変数をどこで宣言するかは、C#のコードを書くうえでとても重要です。
8-5. コンパイルエラーが出たときの確認ポイント
while文でコンパイルエラーが出た場合は、次の点を確認しましょう。
まず、条件式がtrueまたはfalseになる式になっているかを確認します。
C#int i = 0;
while (i)
{
Console.WriteLine(i);
}
C#では、このような書き方はできません。iは整数であり、条件式として直接使えないためです。
正しくは、次のように比較式を書きます。
C#int i = 0;
while (i < 5)
{
Console.WriteLine(i);
i++;
}
また、{ }の閉じ忘れや、セミコロンの付け間違いにも注意しましょう。
9. while文の実践サンプルコード
ここからは、C#のwhile文を使った実践的なサンプルコードを紹介します。
基本構文を理解したら、実際の使い方を見ながら慣れていきましょう。
9-1. 1から10までの数字を表示する
最も基本的なサンプルです。
C#int number = 1;
while (number <= 10)
{
Console.WriteLine(number);
number++;
}
実行結果は次のとおりです。
1
2
3
4
5
6
7
8
9
10
numberを1から始め、10以下の間だけ繰り返しています。
9-2. ユーザー入力を繰り返し受け取る
ユーザーが特定の文字を入力するまで、入力を繰り返すサンプルです。
C#string input = "";
while (input != "exit")
{
Console.WriteLine("文字を入力してください。終了するには exit と入力します。");
input = Console.ReadLine();
Console.WriteLine("入力内容: " + input);
}
このコードでは、ユーザーがexitと入力するまで処理を続けます。
入力回数が事前に決まっていないため、while文に向いている例です。
9-3. 条件を満たすまで処理を続ける
次のコードでは、合計が20以上になるまで数値を足し続けます。
C#int total = 0;
int number = 1;
while (total < 20)
{
total += number;
Console.WriteLine("number: " + number + ", total: " + total);
number++;
}
実行結果の例は次のようになります。
number: 1, total: 1
number: 2, total: 3
number: 3, total: 6
number: 4, total: 10
number: 5, total: 15
number: 6, total: 21
totalが20以上になった時点で、条件式total < 20がfalseになり、ループが終了します。
9-4. 配列やリストの要素を順番に処理する
while文を使って、配列の要素を順番に処理することもできます。
C#string[] fruits = { "りんご", "みかん", "バナナ" };
int index = 0;
while (index < fruits.Length)
{
Console.WriteLine(fruits[index]);
index++;
}
実行結果は次のとおりです。
りんご
みかん
バナナ
配列の添字は0から始まるため、indexの初期値は0です。
index < fruits.Lengthという条件にすることで、配列の範囲を超えないようにしています。
9-5. 簡単なメニュー処理を作る
while文は、メニュー処理にもよく使われます。
C#while (true)
{
Console.WriteLine("メニューを選択してください");
Console.WriteLine("1: あいさつ");
Console.WriteLine("2: 現在の時刻を表示");
Console.WriteLine("0: 終了");
string choice = Console.ReadLine();
if (choice == "1")
{
Console.WriteLine("こんにちは!");
}
else if (choice == "2")
{
Console.WriteLine(DateTime.Now);
}
else if (choice == "0")
{
Console.WriteLine("終了します");
break;
}
else
{
Console.WriteLine("正しい番号を入力してください");
}
}
このコードでは、ユーザーが0を選ぶまでメニューが繰り返し表示されます。
while (true)とbreakを組み合わせた、実用的なC# while loopの例です。
10. while文を読みやすく安全に書くコツ
while文は便利ですが、書き方によっては読みづらくなったり、無限ループの原因になったりします。
安全に使うためには、終了条件や更新処理をわかりやすく書くことが大切です。
10-1. 終了条件を明確にする
while文を書くときは、「いつループが終わるのか」を明確にしましょう。
C#int count = 0;
while (count < 10)
{
Console.WriteLine(count);
count++;
}
このコードでは、countが10未満の間だけ繰り返すことがすぐにわかります。
反対に、終了条件が複雑すぎると、コードを読んだ人が理解しにくくなります。
10-2. ループ内で条件に関係する値を更新する
条件式に使っている値は、ループ内で適切に更新しましょう。
C#int i = 0;
while (i < 5)
{
Console.WriteLine(i);
i++;
}
i++があることで、いつかi < 5がfalseになります。
条件に関係する値が変わらない場合、無限ループになる可能性があります。
10-3. 複雑な条件式を書きすぎない
条件式が複雑になると、while文の動きがわかりにくくなります。
C#while (count < 10 && isRunning && input != "exit")
{
// 処理
}
この程度であれば問題ありませんが、条件がさらに長くなる場合は、bool型の変数に分けると読みやすくなります。
C#bool shouldContinue = count < 10 && isRunning && input != "exit";
while (shouldContinue)
{
// 処理
shouldContinue = count < 10 && isRunning && input != "exit";
}
条件式は、後から見ても意味がわかるように書くことが大切です。
10-4. breakやcontinueを使いすぎない
breakやcontinueは便利ですが、多用すると処理の流れが追いにくくなります。
C#while (true)
{
if (条件1)
{
continue;
}
if (条件2)
{
break;
}
if (条件3)
{
continue;
}
}
このようなコードは、どこで処理がスキップされ、どこで終了するのかがわかりにくくなります。
必要な場合だけ使い、できるだけシンプルな構造にしましょう。
10-5. コメントを使って処理の意図を明確にする
複雑なwhile文を書く場合は、コメントを使って処理の意図を明確にすると読みやすくなります。
C#int retryCount = 0;
// 最大3回まで入力を受け付ける
while (retryCount < 3)
{
Console.WriteLine("パスワードを入力してください");
string password = Console.ReadLine();
if (password == "secret")
{
Console.WriteLine("ログイン成功");
break;
}
retryCount++;
}
コメントを書くことで、「なぜこのループが必要なのか」がわかりやすくなります。
ただし、コードを読めばわかる内容を何でもコメントにする必要はありません。意図や理由が伝わるコメントを心がけましょう。
11. C#のwhile文に関するよくある質問
ここでは、C#のwhile文について初心者が疑問に思いやすい内容をまとめます。
11-1. while文はいつ使えばいい?
while文は、繰り返す回数が事前に決まっていないときに使うのが基本です。
たとえば、ユーザーが正しい値を入力するまで繰り返す場合や、特定の条件が満たされるまで処理を続ける場合に向いています。
C#while (条件式)
{
処理;
}
「条件が成り立つ間は続ける」と考えると理解しやすいです。
11-2. while(true)は使っても問題ない?
while (true)は使っても問題ありません。
ただし、必ずbreakなどで終了できるようにする必要があります。
C#while (true)
{
string input = Console.ReadLine();
if (input == "exit")
{
break;
}
}
終了条件がないwhile (true)は、プログラムが止まらなくなる原因になります。
11-3. while文とfor文はどちらを覚えるべき?
どちらも覚えるべきです。
while文は条件を満たす間繰り返す処理に向いており、for文は回数が決まっている繰り返しに向いています。
C#でプログラムを書くなら、どちらもよく使う基本構文です。
まずはwhile文で繰り返し処理の考え方を理解し、その後for文との違いを覚えるとよいでしょう。
11-4. while文の中にwhile文を書くことはできる?
はい、できます。
while文の中にさらにwhile文を書くことを、ネストといいます。
C#int i = 1;
while (i <= 3)
{
int j = 1;
while (j <= 3)
{
Console.WriteLine("i: " + i + ", j: " + j);
j++;
}
i++;
}
ただし、ネストが深くなるとコードが読みにくくなります。
初心者のうちは、必要以上にwhile文を入れ子にしすぎないようにしましょう。
11-5. while文が止まらないときはどうすればいい?
while文が止まらないときは、まず条件式と更新処理を確認しましょう。
C#int i = 0;
while (i < 5)
{
Console.WriteLine(i);
}
このコードでは、i++がないため、iがずっと0のままです。
正しくは次のようにします。
C#int i = 0;
while (i < 5)
{
Console.WriteLine(i);
i++;
}
また、continueによって更新処理がスキップされていないか、比較演算子を間違えていないかも確認しましょう。
実行中のプログラムを止めたい場合は、開発環境の停止ボタンやコンソールのCtrl + Cを使います。
まとめ
C#のwhile文は、条件がtrueの間だけ処理を繰り返すための基本構文です。
基本形は次のとおりです。
C#while (条件式)
{
繰り返したい処理;
}
while文を使うときは、変数の初期化、条件式、更新処理の流れを意識することが大切です。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
count++;
}
また、while (true)を使えば無限ループを書くこともできますが、必ずbreakなどで終了できるようにしましょう。
C#while (true)
{
string input = Console.ReadLine();
if (input == "exit")
{
break;
}
}
continueを使えば特定の処理だけをスキップでき、do-while文を使えば最低1回は処理を実行できます。
C#のwhile loopを正しく理解すると、ユーザー入力、メニュー処理、条件付きの繰り返し、配列やリストの処理など、さまざまなプログラムを書けるようになります。
まずは、短いサンプルコードを実際に動かしながら、条件式がどのタイミングで判定されるのか、変数がどのように変化するのかを確認してみましょう。

