パハットノート

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

C# enumに対するfor文・foreach





概要

enum型のすべての要素に対してのループ処理をしたかったのでその方法をまとめました。




導入

以下のような列挙型変数Numberを利用します。

enum Number
{
    Zero,
    One,
    Two,
    Three,
    Four,
    Five
}





for文を利用する場合

Numberの要素数を取得して処理を行います。

using System;

enum Number
{
    Zero,
    One,
    Two,
    Three,
    Four,
    Five
}

public class ExampleFor
{
    public static void Main()
    {
        //Numberの要素数を取得(Enum.GetNames(typeof(Number)).Lengthでもよい)
        int len = Enum.GetValues(typeof(Number)).Length;

        for (int i = 0; i < len; i++)
        {
            //iに対応するNumberの要素を取得
            Number num = (Number)Enum.ToObject(typeof(Number), i);

            Console.WriteLine($"{num} = {i}");
        }

    }
}


実行結果

Zero = 0
One = 1
Two = 2
Three = 3
Four = 4
Five = 5




foreachを利用したとき

foreachを利用する場合は以下のようなプログラムになります。

using System;

enum Number
{
    Zero,
    One,
    Two,
    Three,
    Four,
    Five
}

public class ExampleForeach
{
    public static void Main()
    {
        //Numberの全要素をArray型として取得
        Array array = Enum.GetValues(typeof(Number));

        foreach (object value in array)
        {
            //object型のvalueからnumに変換
            Number num = (Number)value;

            Console.WriteLine(num);
        }
    }
}


実行結果

Zero
One
Two
Three
Four
Five