概要
- foreachにより、配列やリストに対する繰り返し処理を、for文よりも効率的に記述することができます。
- ソートなどループ回数の記録が必要であったり、中身を書き換えたりするときはfor文、中身の表示を行うなど元の配列やリストを変更しないときはforeach文を使用といった感じな使い分けがオススメ。
- ↓↓記述方法
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で中身の表示を行っても、元のスタックの中身からpopされることはなかった。
ソースコード
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
List.forEachについて
- Listに関するforEachは以下のような記述でも可能である(参考↓)
ソースコード
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)); } }
実行結果
馬 鳥 虎