如何获得在C#中的所有枚举值的数组?
我有一个枚举,我想显示所有可能的值。有没有办法获得枚举的所有可能值的数组或列表,而不是手动创建这样的列表?例如如果我有一个枚举:如何获得在C#中的所有枚举值的数组?
public enum Enumnum { TypeA, TypeB, TypeC, TypeD }
我将如何能够得到一个List<Enumnum>
包含{ TypeA, TypeB, TypeC, TypeD }
?
这可以让你使用Enum.GetValues
枚举值的简单数组:
var valuesAsArray = Enum.GetValues(typeof(Enumnum));
这让你一个通用的清单:
var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();
谢谢,正是我一直在寻找! – 2010-09-28 20:34:54
这让我总是想知道为什么'Enumnum.GetValues()'和'Enumnum.GetNames()'不存在。 – dalle 2010-09-28 20:38:17
对于元素类型在编译时已知的数组变量,使用'var valuesAsArray =(Enumnum [])Enum.GetValues(typeof(Enumnum));'。 – 2013-09-22 19:51:52
您可以使用
Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray();
这将返回一个数组中!
Enum.GetValues(typeof(Enumnum));
返回的值的数组枚举。
试试这个代码:
Enum.GetNames(typeof(Enumnum));
这返回string[]
与所选择的枚举的所有枚举名。
返回枚举值的*名称*; OP似乎是在* values *之后。 – 2010-09-28 20:26:18
与此:
string[] myArray = Enum.GetNames(typeof(Enumnum));
,您可以访问阵列,像这样的值:
Array myArray = Enum.GetValues(typeof(Enumnum));
Enum.GetValues不返回一个字符串[] – messenger 2010-09-28 21:00:59
也可以使用
var enumAsJson=typeof(SomeEnum).Name + ":[" + string.Join(",", Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().Select(e => e.ToString())) + "]";
为获得枚举所有元素为JSON格式。
东西有点不同:
typeof(SomeEnum).GetEnumValues();
你可能想这样做:
public enum Enumnum {
TypeA = 11,
TypeB = 22,
TypeC = 33,
TypeD = 44
}
所有诠释的这个enum
是11,22,33,44
值。
您可以通过此获取这些值:
var enumsValues = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList().Select(e => (int)e);
string.Join(",", enumsValues)
是11,22,33,44
。
如果您更喜欢更通用的方式,那就是。您可以根据需要添加更多转换器。
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>();
的OP询问如何获得在C#中的所有enum
值的数组?
如果你想在C#中获得一个选定的enum
值的数组怎么办?
你枚举
enum WeekDays
{
Sunday,
Monday,
Tuesday
}
如果你只想从你的Enum
选择Sunday
。
WeekDays[] weekDaysArray1 = new WeekDays[] { WeekDays.Sunday };
WeekDays[] weekDaysArray2 = Enum.GetValues(typeof(WeekDays)).Cast<WeekDays>().Where
(x => x == WeekDays.Sunday).ToArray();
学分去知识的tl。
参考文献:
希望可以帮助别人。
可能重复的[转换枚举到列表中的C#](http://stackoverflow.com/questions/1167361/convert-enum-to-list-in-c) – 2010-09-28 20:30:15