パープルハット

※当サイトではGoogleアドセンス広告を利用しています

C# foreachの使い方



foreachについて

概要

  • foreachにより、配列やリストに対する繰り返し処理を、for文よりも効率的に記述することができます。
  • ソートなどループ回数の記録が必要であったり、中身を書き換えたりするときはfor文、中身の表示を行うなど元の配列やリストを変更しないときはforeach文を使用といった感じな使い分けがオススメ。
  • ↓↓記述方法
foreach(データ型 変数 in 配列やリストなど)
{
// 処理



処理の流れ

例えば、

int[] a = new int[] { 3, 4, 1 };

foreach(int i in a)
{
    // 処理
}

とすると、

  • 1回目のループ:i=3
  • 2回目のループ:i=4
  • 3回目のループ:i=1

というようにループしていく。







例1 int型配列の中身を表示

ソースコード

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されることはなかった。

ソースコード

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

実行結果

馬
鳥
虎