我有一个枚举,我想显示所有可能的值。有没有办法获取枚举的所有可能值的数组或列表,而不是手动创建这样的列表?例如如果我有一个枚举:
public enum Enumnum { TypeA, TypeB, TypeC, TypeD }
我如何才能获得包含List<Enumnum>
的{{1}}?
答案 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();
学分归于知识渊博。
参考文献:
希望帮助某人。