foreachとは、コレクションの中身を取得するループ処理です。
コレクションとは、配列などのオブジェクトの集まりのことです。
foreach(型名 変数名 in コレクション)
{
変数を使った処理;
}
コレクションの要素をループごとに順番に変数に代入して、ブロック内で変数を使った処理をします。
foreachで使う変数の宣言をします。
この変数には、1回のforeachのループでコレクションの中身が1つずつ代入されます。
型名はコレクションと同じ型名を指定します。
中身を取得したいコレクションを指定します。
変数を使った処理を書きます。
例えばConsole.WriteLine(変数名);と書くと、コレクションの中身を表示できます。
## foreachで配列の要素を取得する
using static System.Console;
class Test
{
static void Main()
{
string[] kago = { "イチゴ", "ミカン" }; // 配列kagoの初期化
foreach (string nakami in kago) // 変数nakamiの宣言とコレクションに配列kagoの指定
{
WriteLine(nakami); // 変数nakamiを表示
}
}
}
イチゴ
ミカン
foreachを使って配列kagoの要素を全て表示しています。
1. 変数nakamiに配列kagoの1番目の要素の 〈 イチゴ 〉 が代入されます。
2. ブロック内のWriteLine(nakami);が実行され、 〈 イチゴ 〉 と表示されます。
3. 変数nakamiに配列kagoの2番目の要素の 〈 ミカン 〉 が代入されます。
4. ブロック内のWriteLine(nakami);が実行され、 〈 ミカン 〉 と表示されます。
5. 変数nakamiに代入する要素がなくなったため、foreachを終了します。
コレクションの要素を代入する変数に、文字列型の変数nakamiを指定します。
コレクションに配列kagoを指定します。
ループごとに変数nakamiの要素を表示します。
## foreachで2次元配列の要素を取得する
2次元配列の要素を取得する場合も、配列の要素を取得するときと同じように書きます。
foreach(型名 変数名 in 2次元配列)
{
処理;
}
1回のループごとに、2次元配列の1行目の要素を先頭から[0, 0]、[0, 1]、[0, 2]…と順番に変数に代入され、ブロック内の処理が実行されます。
1列目の要素を全て代入されると、2行目の要素を先頭から[1, 0]、[1, 1]、[1, 2]…と順番に変数に代入され、ブロック内の処理が実行されます。
全ての配列の要素が変数に代入されるまで、変数に要素の代入とブロック内の処理が繰り返されます。
代入する要素がなくなるとforeachを終了します。
using static System.Console;
class Test
{
static void Main()
{
string[,] kago = {
{ "イチゴ(0 0)", "イチゴ(0 1)" },
{ "ミカン(1 0)", "ミカン(1 1)" }
};
foreach (string nakami in kago)
{
WriteLine(nakami);
}
}
}
イチゴ(0 0)
イチゴ(0 1)
ミカン(1 0)
ミカン(1 1)
1. foreachが実行されると2次元配列kagoの1番目の要素が変数nakamiに代入されます。
2. WriteLine(nakami);が実行され、イチゴ(0 0)が表示されます。
3. 2次元配列kagoの2番目の要素が変数nakamiに代入されます。
4. WriteLine(nakami);が実行され、イチゴ(0 1)が表示されます。
5. 2次元配列kagoの3番目の要素が変数nakamiに代入されます。
6. WriteLine(nakami);が実行され、ミカン(1 0)が表示されます。
7. 2次元配列kagoの4番目の要素が変数nakamiに代入されます。
8. WriteLine(nakami);が実行され、ミカン(1 1)が表示されます。
9. 変数に代入する要素がなくなったので、foreachを終了します。