パハットノート

主にUnity(C#)を中心としたプログラムの備忘録

C# 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で中身の表示を行っても、元のスタックの中身はなくならなかった。

ソースコード

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));
    }
}

実行結果

馬
鳥
虎