C#のwhile文の使い方について書いています。
while文を使うことで、繰り返し(ループ)処理をすることができます。
記事内のサンプルコードについては、.Netのバージョン6(C#のバージョン10)で確認しました。
whileの使い方
C#のwhile文を使うことで、指定した条件に合う間(true
のとき)、処理をループします。
例えば、下記のように使うことができます。
int count = 0;
while (count < 5) {
Console.WriteLine($"カウンタ:{count}");
count++;
}
最初にcount
変数に対して、「0」を代入しています。
次の処理で、while文を使っています。
丸括弧「()
」に渡しているのが、ループの継続条件になります。
今回は「count < 5
」としているので、count
変数の値が「0」から「4」までの間、繰り返されます。
ループ処理の中で、count
変数の値を出力して、ループの終わりにカウントアップしています。
カウントアップを忘れると、継続条件がずっと変わらずに無限ループになってしまうので気をつけましょう。
プログラムを実行すると、下記のように5回繰り返されたことがわかりました。
カウンタ:0
カウンタ:1
カウンタ:2
カウンタ:3
カウンタ:4
breakを使って途中で抜ける
breakを使うと、whileループの継続条件にあっていても、任意のタイミングで処理を抜けることができます。
例えば、下記のように使えます。
int count = 0;
while (count < 5)
{
if (count == 2) {
break;
}
Console.WriteLine($"カウンタ:{count}");
count++;
}
最初にcount
変数に対して、数値の「0」を代入しています。
次の処理で、先ほどと同じようにwhile文を使っています。
count
変数の値が「0」から「4」までの間、ループして処理をします。
whileの処理の最初で、count
変数が「2」だったらbreakを実行しています。
そのため、count
変数が「2」になったらループ処理を抜けます。
プログラムを実行すると、下記のようにbreakして、処理を抜けることができました。
カウンタ:0
カウンタ:1
continueを使ってスキップする
continueを使うと、whileループの途中で処理をスキップすることができます。
例えば、下記のようにスキップできます。
int count = 0;
while (count < 5)
{
if (count == 2 || count == 4)
{
count++;
continue;
}
Console.WriteLine($"カウンタ:{count}");
count++;
}
先ほどと同じように、count
変数に対して「0」を代入しています。
そしてwhileのループの最初に、count
変数が「2」または「4」だったときには、continueを実行しています。
continueの前にcount
変数をカウントアップしていますが、カウントアップ(count++
)を忘れると、ずっと同じ値でループして無限ループになります。
whileでcontinueするときには、カウントアップを忘れないように気をつけましょう。
プログラムを実行すると、下記のように出力されました。
カウンタ:0
カウンタ:1
カウンタ:3
count
変数が「2」と「4」のときにはスキップできたことが確認できました。
forとwhileの違い
こちらにfor文の記事を書いたので確認してみてください。
for文は初期値・継続条件・ステップ値を指定しますが、while文は継続する条件だけでした。
また、for文ではループの最後にステップ値が足されていきますが、while文は明示的に足す処理が必要でした。
ループ処理の最後のカウントアップや、continueしたときのカウントアップを忘れたりすると無限ループになります。
このようにバグを作りやすくなるので、基本的にはfor文を使うようにしたほうが良いかと思います。
whileの無限ループについて
while文に指定した条件がずっと合う状態(true
)になって、処理を抜けないことを無限ループといいます。
例えば、下記のように条件が変わらないときには、ずっとループから抜けることができません。
int count = 0;
while (count < 5)
{
Console.WriteLine("カウンタ値が変わらないので無限ループ");
}
ここではcount
変数の値が0のまま変わらないため、無限ループになります。
またtrue
を条件に指定することで、意図的に無限ループを作ることもできます。
while (true)
{
Console.WriteLine("これは無限ループ!");
}
whileの使い方についてのまとめ
今回はC#のwhileの使い方について書きました。
記事の内容をまとめると、下記のようになります。
・breakを使うと、whileループの途中で抜けることができた。
・continueを使うと、whileループの途中でスキップすることができた。
・while文ではカウントアップを書いておく必要があった。
コメント