【问题标题】:Can you loop through an enum in C#?你可以循环遍历 C# 中的枚举吗?
【发布时间】:2011-11-28 13:49:54
【问题描述】:
for (int i = (int)MY_ENUM.First; i <= (int)MY_ENUM.Last; i++)
{
    //do work
}

有没有更优雅的方法来做到这一点?

【问题讨论】:

标签: c# enums


【解决方案1】:

您应该能够使用以下内容:

foreach (MY_ENUM enumValue in Enum.GetValues(typeof(MY_ENUM)))
{
   // Do work.
}

【讨论】:

    【解决方案2】:

    枚举有点像整数,但你不能依赖它们的值总是顺序的或升序的。您可以将整数值分配给枚举值,这会破坏您的简单 for 循环:

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

    正如其他人所说,Enum.GetValues 是要走的路。

    【讨论】:

      【解决方案3】:

      看看Enum.GetValues

      foreach (var value in Enum.GetValues(typeof(MY_ENUM))) { ... }
      

      【讨论】:

        【解决方案4】:

        public static Array GetValues(Type enumType) 方法返回一个包含 anEnum 枚举值的数组。由于数组实现了 IEnumerable 接口,因此可以枚举它们。 例如:

         EnumName[] values = (EnumName[])Enum.GetValues(typeof(EnumName));
         foreach (EnumName n in values) 
             Console.WriteLine(n);
        

        你可以在MSDN看到更详细的解释。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多