for (int i = (int)MY_ENUM.First; i <= (int)MY_ENUM.Last; i++)
{
//do work
}
もっとエレガントな方法がありますか?C#の列挙型をループすることはできますか?
for (int i = (int)MY_ENUM.First; i <= (int)MY_ENUM.Last; i++)
{
//do work
}
もっとエレガントな方法がありますか?C#の列挙型をループすることはできますか?
次を利用することができるはずです。
foreach (MY_ENUM enumValue in Enum.GetValues(typeof(MY_ENUM)))
{
// Do work.
}
はEnum.GetValues
を見てみましょう:
foreach (var value in Enum.GetValues(typeof(MY_ENUM))) { ... }
public static Array GetValues(Type enumType)
方法をanEnum列挙の値を持つ配列を返します。配列はIEnumerableインターフェイスを実装しているので、それらを列挙することは可能です。たとえば :
EnumName[] values = (EnumName[])Enum.GetValues(typeof(EnumName));
foreach (EnumName n in values)
Console.WriteLine(n);
あなたはMSDNで、より詳細な、について説明を見ることができます。
列挙型は整数のようなものですが、値は常に逐次または昇順に依存することはできません。 Enum.GetValues
ではなく、移動するための方法である、と述べている他の人のよう
public class Program
{
enum MyEnum
{
First = 10,
Middle,
Last = 1
}
public static void Main(string[] args)
{
for (int i = (int)MyEnum.First; i <= (int)MyEnum.Last; i++)
{
Console.WriteLine(i); // will never happen
}
Console.ReadLine();
}
}
:あなたは、単純なfor
ループを壊す列挙値に整数値を割り当てることができます。
あなたのコードは、範囲が連続しているintsでサポートされているenumに対してのみ機能します。 –
[C#の列挙型を繰り返す可能性がありますか? (Indexing a System.Array)](http://stackoverflow.com/questions/482729/c-sharp-iterating-through-an-enum-indexing-a-system-array) –