パープルハット

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

C# enumをfor文・foreachで処理



導入

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

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





for文を利用する場合

やり方

Enum.GetValues(typeof(Number))

で指定したNumberの要素を配列に変換できるので、これのLengthを取得します。


(Number)Enum.ToObject(typeof(Number), i);

でNumberのi番目の要素を取得します。

サンプルコード

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を利用する場合

サンプルコード

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