この章のテーマ §
列挙の基本、foreach文(ステートメント)を学びます。データの数が増えてもこれがあれば安心です。
前提知識 §
Console.WriteLineメソッド, 文字列の基礎, 配列の基礎, string型
解説 §
foreach文は以下のような書式で使用し、列挙可能なオブジェクトの中味を列挙します。
- foreach(型名 変数名 in 列挙可能なオブジェクト) 繰り返す文
列挙可能なオブジェクトとは、配列、文字列、コレクションと呼ばれるオブジェクトなどなどです。
条件は複数あるので、分かりにくいのですが、おおむね配列とコレクションと呼ばれるオブジェクトは列挙できると覚えておけば当面は十分でしょう。
ここでいう列挙とは、たとえば1,2,3という要素を持った配列なら、対象の文を3回実行することを意味します。その際、foreach文の中で宣言される変数であるループ変数の中味は1回ごとに1,2,3と変化します。
馬鹿正直に繰り返すだけかと思われるかも知れませんが、LINQのようなコレクションを加工する機能を併用すると、とても強力に使えます。LINQを学ぶときに思いだして下さい。
罠の数々 §
- 文字列を列挙すると1文字単位で取得できる。この場合の1文字はchar型のデータ1つという意味で、厳密な意味で1文字に対応しないかもしれない
- 列挙はbreak文などで中断ができる。常に最後まで繰り返しが行われるわけではない
- 繰り返しの中に繰り返しを入れることもできる。そういう時はループ変数の名前を変えておく必要がある
- forech文は何回繰り返すか指定する必要はない。列挙対象の数だけ繰り返すからである
参考リンク §
反復ステートメント (C# リファレンス)
サンプルソース: kw_foreach §
string[] myArray = new string[3];
myArray[0] = "たろう";
myArray[1] = "ジョー";
myArray[2] = "ねこ";
foreach (var item in myArray)
{
Console.WriteLine($"{item}さん、ハロー!");
}
実行結果 §
たろうさん、ハロー!
ジョーさん、ハロー!
ねこさん、ハロー!
リポジトリ §
https://github.com/autumn009/CSharpPrimer2
練習問題 §
以下のプログラムの実行結果を予測してみよう。
int[] a = new int[3];
a[0] = 100;
a[1] = 200;
foreach (var item in a) Console.Write("GO!");
- GO!
- GO!GO!
- GO!GO!GO!
- 100200
- 1002000
[[解答]]