本記事では配列の要素を1つずつ取り出す『foreach文』について解説していきます。
ちなみに本記事では『配列』を対象にしていますが、他のコレクションオブジェクトである『List』や『Dictionary』でもforeach文は使うことができます。
foreachの使い方
ここではforeach文の「書式」と「for文との違い」について解説します。
foreachの書式
引数 | 意味 |
型名 | 「配列と同じ型名」を指定 |
変数 | 対象配列の要素を入れる変数 |
配列名 | 「1つずつ要素を取り出す配列」を指定 |
foreach文は対象配列の要素を1つずつ取り出すために使います。
『配列名』で指定した配列の要素をループ事に1つずつ『変数』に代入します。
for文との違い【メリット】
まずはfor文とforeach文との記述の違いを見てみます。
下はどちらとも同じ結果が得られるコードになります。
【foreach文】
var values = new int[] {1, 2, 3};
foreach (int val in values)
{
console.WriteLine(val)
}
【for文】
var values = new int[] {1, 2, 3};
for (var i =0; i < values.Length; i++)
{
console.WriteLine(values[i])
}
確認するとわかるように、「引数部分」と「配列要素の取り出し方」に大きく違いがあります。
それにより、foreach文を使うと下のようなメリットがあります。
【foreach文のメリット】
・各要素にアクセスするときにインデックス指定がいらない
・ループ回数を気にしなくてよくなる
こういったメリットがあるので、もしも配列などのコレクションオブジェクトを扱うループ処理を行う際にはforeach文を使ったほうが良いことがほとんどです。
foreachのサンプルコード
上でも紹介しましたが、一応foreach文を使ったサンプルコードを紹介します。
下は「配列に入った要素全てをコンソールに表示する」というコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; namespace sample { class Program { static void Main() { var names = new string[] { "田中太郎", "鈴木一郎", "佐々木次郎" }; foreach (string name in names) { Console.WriteLine(name); } } } } |
実行結果
田中太郎
鈴木一郎
佐々木次郎
【おまけ】foreach文は文字列にも使える
foreach文は配列などのコレクションオブジェクトに用いられることがほとんどです。
ですが、そのforeach文は文字列にも使えたりします。
文字列にforeach文を用いると”1文字ずつ取り出す”ことができます。
一応、この事実について、下のコードで確認しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; namespace sample { class Program { static void Main() { var name = "田中太郎"; foreach (char c in name) { Console.WriteLine(c); } } } } |
foreach (char c in name)
{
Console.WriteLine(c);
}
文字列にforeach文を使うと、1文字ずつ取り出せます。
その取り出した値を代入する変数の型は11行目のように『char型(1文字を扱う型)』である必要があります。
上のコードを実行すると、コンソールには1文字ずつ表示されます。
文字列にforeach文を使うことはほとんどありませんが、覚えておくと役立つかもしれません。
スポンサーリンク