C#における繰り返し処理の書き方をまとめて紹介します。
繰り返しには "for文", "foreach文", "while文", "do-while文" が存在します。
ひとつずつ見ていきましょう
for文
for文の書き方は以下のようになります。
// for (初期化式; ループ条件式; 更新式)
for (int i = 0; i < 3; i++)
{
// ループ処理
Console.WriteLine(i);
}
> 0
> 1
> 2
for文は次の順番で実行されます
- 初期化式
- ループ条件式評価
- 2.が偽 ⇒ 終了
- 2.が真 ⇒ ループ処理実行
- 更新式実行
- 3.に戻る
つまり、最初からループ条件式が偽であれば、一度もfor文の中に入らず、ループ処理を実行しないこともあります。
上記のfor文はi=0から始まっていき、iが3以上になるまで内部の処理を繰り返すことになります。
foreach文
foreach文ではfor文と違いループ条件や更新の式がなく、コレクションの全要素に対してループを回します。
int[] arr = new int[] { 2, 4, 6 };
//foreach (一時変数宣言 in コレクション)
foreach (int even in arr)
{
//ループ処理
Console.WriteLine(even);
}
> 2
> 4
> 6
単純なfor文と比べて式が簡素になる反面、foreachでループしている間はコレクションへの変更・追加ができなくなります。
int[] arr = new int[] { 2, 4, 6 };
for (int i = 0; i < arr.Length; i++)
{
arr[i] /= 2;
}
foreach (int even in arr)
{
Console.WriteLine(even);
// 変更不可
// even *= 2;
}
> 1
> 2
> 3
while文
for文のような初期化子を抜きにしてある条件を満たしている間繰り返すような処理を書く場合、while文を使用します。
// while (条件式)
bool loop = true;
while (loop)
{
// loop = 何らかの処理
}
loop変数がtrueの間while文は繰り返し続け、loopがfalseになった段階で繰り返しを終了します。
do-while文
do-while文もwhile文とほとんど一緒ですが、最初だけ挙動が異なります。
bool loop = true;
do
{
// loop = 何らかの処理
} while (loop);
こちらもloopがtrueの間繰り返し続けることになりますが、例え最初からloop変数がfalseだったとしても、最初の一回だけは実行されます。
必ず初回は処理をして、その結果によって繰り返しの判定を行いたい時などはdo-while文が有用です。
ただし、while文やdo-while文はプログミングのミスにより"無限ループ"を引き起こしやすいので、使用するときは繰り返しの停止条件が正しいのか、よくよく注意する必要があります。
今回はここまで