如何在C#中获取所有枚举值的数组?

时间:2010-09-28 20:21:38

标签: c# enums

我有一个枚举,我想显示所有可能的值。有没有办法获取枚举的所有可能值的数组或列表,而不是手动创建这样的列表?例如如果我有一个枚举:

public enum Enumnum { TypeA, TypeB, TypeC, TypeD }

我如何才能获得包含List<Enumnum>的{​​{1}}?

10 个答案:

答案 0 :(得分:139)

这会使用Enum.GetValues

为您提供一个简单的枚举值数组
var valuesAsArray = Enum.GetValues(typeof(Enumnum));

这会给你一个通用列表:

var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();

答案 1 :(得分:16)

试试这段代码:

Enum.GetNames(typeof(Enumnum));

这将返回一个string[],其中包含所选枚举的所有枚举名称。

答案 2 :(得分:6)

Enum.GetValues(typeof(Enumnum));

返回Enum中值的数组。

答案 3 :(得分:3)

有点不同:

typeof(SomeEnum).GetEnumValues();

答案 4 :(得分:3)

你可能想这样做:

public enum Enumnum { 
            TypeA = 11,
            TypeB = 22,
            TypeC = 33,
            TypeD = 44
        }

enum的所有int值均为11,22,33,44

您可以通过以下方式获取这些值:

var enumsValues = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList().Select(e => (int)e);

string.Join(",", enumsValues)11,22,33,44

答案 5 :(得分:2)

用这个:

string[] myArray = Enum.GetNames(typeof(Enumnum));

您可以像这样访问值数组:

Array myArray = Enum.GetValues(typeof(Enumnum));

答案 6 :(得分:1)

您可以使用

Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray();

这会返回一个数组!

答案 7 :(得分:1)

如果您更喜欢更通用的方式,那么就是这样。您可以根据需要添加更多转换器。

    public static class EnumConverter
    {

        public static string[] ToNameArray<T>()
        {
            return Enum.GetNames(typeof(T)).ToArray();
        }

        public static Array ToValueArray<T>()
        {
            return Enum.GetValues(typeof(T));
        }

        public static List<T> ToListOfValues<T>()
        {
            return Enum.GetValues(typeof(T)).Cast<T>().ToList();
        }


        public static IEnumerable<T> ToEnumerable<T>()
        {
            return (T[])Enum.GetValues(typeof(T));
        }

    }

示例实现:

   string[] roles = EnumConverter.ToStringArray<ePermittedRoles>();
   List<ePermittedRoles> roles2 = EnumConverter.ToListOfValues<ePermittedRoles>();
   Array data = EnumConverter.ToValueArray<ePermittedRoles>();

答案 8 :(得分:0)

你也可以使用

var enumAsJson=typeof(SomeEnum).Name + ":[" + string.Join(",", Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().Select(e => e.ToString())) + "]";

将枚举中的所有元素作为json格式。

答案 9 :(得分:0)

OP询问如何在C#中获取所有enum值的数组?

如果您想在C#中获取一系列选定的enum值,该怎么办?

您的枚举

    enum WeekDays 
    {
        Sunday, 
        Monday,
        Tuesday
    }

如果您只想从Sunday中选择Enum

  WeekDays[] weekDaysArray1 = new WeekDays[] { WeekDays.Sunday };

  WeekDays[] weekDaysArray2 = Enum.GetValues(typeof(WeekDays)).Cast<WeekDays>().Where
  (x => x == WeekDays.Sunday).ToArray();

学分归于知识渊博。

参考文献:

1.

2.

希望帮助某人。