概要
foreach(データ型 変数 in 配列やリストなど) { }
で繰り返し処理を行う
例1 int型配列の中身を表示
using System; public class Sample1 { public static void Main() { int[] a = new int[] { 3, 4, 1, 2 }; foreach (int i in a) { Console.WriteLine(i); } } }
実行結果
3 4 1 2
例2 Action型Listの実行
using System; using System.Collections.Generic; public class Sample2 { public static void Main() { List<Action> actionList = new List<Action> { Action0, Action1, Action2 }; foreach (Action act in actionList) { act(); } } public static void Action0() { Console.WriteLine("Action0"); } public static void Action1() { Console.WriteLine("Action1"); } public static void Action2() { Console.WriteLine("Action2"); } }
実行結果
Action0 Action1 Action2
例3 String型スタックの表示
foreachで中身の表示を行っても、元のスタックの中身はなくならなかった。
using System; using System.Collections.Generic; public class Sample3 { public static void Main() { Stack<string> strStack = new Stack<string>(); strStack.Push("赤"); strStack.Push("青"); strStack.Push("黄色"); foreach (string s in strStack) { Console.WriteLine(s); } Console.WriteLine(strStack.Count); } }
実行結果
黄色
青
赤
3
個人的なfor文との使い分け
- ソートなどループ回数の記録が必要であったり、中身を書き換えたりするときは、for文を使用
- 例にも示したように中身の表示を行うなど元の配列やリストを変更しないときはforeach文を使用
追記
Listの中身の表示は次のようにしても可能であった。
using System; using System.Collections.Generic; public class Sample4 { public static void Main() { List<string> myList = new List<string>() { "馬", "鳥", "虎", }; myList.ForEach(s => Console.WriteLine(s)); } }
実行結果
馬 鳥 虎