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

How to get an array of all enum values in C#?

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

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

我怎样才能得到一个包含{ TypeA, TypeB, TypeC, TypeD }List


这将使用Enum.GetValues为您提供一个简单的枚举值数组:

1
var valuesAsArray = Enum.GetValues(typeof(Enumnum));

这将为您提供一个通用列表:

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


试试这个代码:

1
Enum.GetNames(typeof(Enumnum));

这将返回带有所选枚举的所有枚举名称的string[]


1
Enum.GetValues(typeof(Enumnum));

返回枚举中的值数组。


您可能需要这样做:

1
2
3
4
5
6
public enum Enumnum {
            TypeA = 11,
            TypeB = 22,
            TypeC = 33,
            TypeD = 44
        }

enum的所有int值都是11,22,33,44

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

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

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


有点不同:

1
typeof(SomeEnum).GetEnumValues();

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    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));
        }

    }

示例实现:

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


用这个:

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

您可以这样访问值数组:

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


你可以使用

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

这将返回一个数组!


OP要求如何获得C_中所有enum值的数组?

如果您想获得一个选定的enum值数组,用C_?

你的枚举

1
2
3
4
5
6
    enum WeekDays
    {
        Sunday,
        Monday,
        Tuesday
    }

如果您只想从您的enum中选择Sunday

1
2
3
4
  WeekDays[] weekDaysArray1 = new WeekDays[] { WeekDays.Sunday };

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

学分归知识渊博的TL。

参考文献:

1。

2。

希望能帮助别人。


你也可以用

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

以JSON格式获取枚举中的所有元素。