C#のforとforeachの主な違いは、forループが汎用の制御構造として使われるのに対し、foreachループは特に配列やコレクションに使われることである。
コンピュータプログラミングとは、コンピュータにあるタスクを実行させるための命令を記述するプロセスです。
C#は、プログラマーがプログラムを書くために使用するプログラミング言語です。
時には、一連のステートメントを何度も繰り返すことが必要な場合があります。
この作業を実現するために役立つのが制御構造です。
C#のプログラミングで利用できる制御構造には、forループとforeachループがあります。
さらに、foreachループはforループを拡張したものです。
C#のforって何?
C#では、プログラム中の一連のステートメントを繰り返し処理するために、forループが用意されています。
その構文は次のとおりです。
for(初期化; test式; update式){」。
// コード
}
まず、初期化が行われます。
次にプログラムはtest式をチェックする。
それが真であれば、forループの中のステートメントが実行されます。
ループの最後のステートメントで、プログラムはupdate式に続き、再びtest式をチェックします。
それが真であれば、ループが再び実行されます。
最後のステートメントでは、プログラムはupdate式に従った後、test式をチェックする。
そして、この処理が繰り返される。
そして、test式がfalseになると、ループが終了し、forループの次の命令に制御が移ります。
以下はその例です。
図1:forループを用いたC#プログラム
初期状態では、数値は1であり、10未満です。
したがって、forループの中のコードが実行される。
Console.WriteLineは数字の1を表示する。
そして、1つずつ増やしていくと、今度は2が表示される。
これは10より小さいので、この数字が画面に表示されます。
この処理を繰り返す。
数字が 9 のとき、それは 10 よりも小さいので、画面にプリントされます。
このとき、数値は 10 になっています。
テスト式は偽です。
というわけで、forループは終了する。
C#のforeachとは
foreachループは、配列やコレクションの要素を取得するために使用されます。
これは、forループの代替となるものです。
foreachループは、配列やコレクション内の各項目を繰り返し処理することができます。
forループと同じタスクを実現するのに役立ちますが、読み書きがより簡単になります。
拡張forループとも呼ばれます。
構文は以下の通りです。
for(データ型 item: collection){
//code for each ループの内部
}
コレクションは、配列またはコレクションの名前を指す。
item は、コレクション内の 1 つの要素を指します。
ループがコレクションを通過するとき、各要素は変数itemに格納される。
ループ内の文は、コレクションが終了するまで実行される。
以下はその例です。
図2:foreachを用いたC#プログラム
数値は配列です。
5つの整数値から構成される。
foreachループは、配列の各要素を繰り返し処理する。
繰り返しのたびに、要素が変数iに格納され、ループ内のコードが実行される。
したがって、配列の各数値はコンソールに表示される。
C#のforとforeachの違い
定義
forループは繰り返し実行を指定するための制御構造であり、foreachループは配列やコレクション内の項目を走査するための制御構造です。
これが、C#におけるforとforeachの主な違いです。
複雑さ
また、forループはforeachループに比べ、読み書きが困難です。
これはC#のforとforeachの違いでもあります。
機能性
C#のforとforeachのもう一つの大きな違いは、機能性です。
forループが汎用的なループであるのに対し、for eachループは配列やコレクションに特化して使用されます。
結論
C#のプログラミングでは、forとforeachという2つの制御フロー構造が用意されています。
プログラマーは、これらを使用して一連のステートメントを何度も実行することができます。
C#のforとforeachの違いは、forループが汎用的な制御構造として使われるのに対し、foreachループは特に配列やコレクションに使われる点です。
簡単に言うと、どちらもコードを繰り返し実行するのに役立ちますが、foreachループは配列とコレクションにより特化しています。