首页 文章

如何循环遍历C#中的所有枚举值? [重复]

提问于
浏览
1188

这个问题已经有了答案:如何在C#中枚举枚举? 26个答案

public enum Foos
{
    A,
    B,
    C
}

有没有办法循环 Foos 的可能值?

基本上?

foreach(Foo in Foos)

8 回答

  • 28

    UPDATED
    一段时间后,我看到一条评论让我回到原来的答案,我想我写的是:'d do it differently now. These days I':

    private static IEnumerable<T> GetEnumValues<T>()
    {
        // Can't use type constraints on value types, so have to do check like this
        if (typeof(T).BaseType != typeof(Enum))
        {
            throw new ArgumentException("T must be of type System.Enum");
        }
    
        return Enum.GetValues(typeof(T)).Cast<T>();
    }
    
  • 101
    foreach(Foos foo in Enum.GetValues(typeof(Foos)))
    
  • 48
    static void Main(string[] args)
    {
        foreach (int value in Enum.GetValues(typeof(DaysOfWeek)))
        {
            Console.WriteLine(((DaysOfWeek)value).ToString());
        }
    
        foreach (string value in Enum.GetNames(typeof(DaysOfWeek)))
        {
            Console.WriteLine(value);
        }
        Console.ReadLine();
    }
    
    public enum DaysOfWeek
    {
        monday,
        tuesday,
        wednesday
    }
    
  • 7
    foreach (Foos foo in Enum.GetValues(typeof(Foos)))
    {
        ...
    }
    
  • 696
    Enum.GetValues(typeof(Foos))
    
  • 1692

    是 . 在System.Enum类中使用GetValues()方法 .

  • 6

    是的,您可以使用 GetValues 方法:

    var values = Enum.GetValues(typeof(Foos));
    

    或者键入的版本:

    var values = Enum.GetValues(typeof(Foos)).Cast<Foos>();
    

    我很久以前就在这样的场合为我的私人图书馆添加了一个辅助函数:

    public static class EnumUtil {
        public static IEnumerable<T> GetValues<T>() {
            return Enum.GetValues(typeof(T)).Cast<T>();
        }
    }
    

    用法:

    var values = EnumUtil.GetValues<Foos>();
    
  • 20
    foreach (EMyEnum val in Enum.GetValues(typeof(EMyEnum)))
    {
       Console.WriteLine(val);
    }
    

    感谢Jon Skeet:http://bytes.com/groups/net-c/266447-how-loop-each-items-enum

相关问题