概要
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