我有一个枚举,我想显示所有可能的值。有没有办法获取该枚举的所有可能值的数组或列表,而不是手动创建此类列表?例如,如果我有一个枚举:
public enum Enumnum { TypeA, TypeB, TypeC, TypeD }
我将如何获得一个List<Enumnum>
包含{ TypeA, TypeB, TypeC, TypeD }
?
Answers:
这将使用以下方法为您提供枚举值的简单数组Enum.GetValues
:
var valuesAsArray = Enum.GetValues(typeof(Enumnum));
这为您提供了一个通用列表:
var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();
Enumnum.GetValues()
和Enumnum.GetNames()
不存在。
var valuesAsArray = (Enumnum[])Enum.GetValues(typeof(Enumnum));
。
Enum.GetValues(typeof(Enumnum)).Cast<ActualType>().ToList();
ActualType
意味着什么?对于枚举,它将Enumnum
在OP的示例中,或者可以是基础类型(通常是int
)。您还有其他想法吗?
试试这个代码:
Enum.GetNames(typeof(Enumnum));
这将返回string[]
带有所选枚举的所有枚举名称的a。
您可能想要这样做:
public enum Enumnum {
TypeA = 11,
TypeB = 22,
TypeC = 33,
TypeD = 44
}
这一切INT值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
。
有了这个:
string[] myArray = Enum.GetNames(typeof(Enumnum));
您可以像这样访问values数组:
Array myArray = Enum.GetValues(typeof(Enumnum));
如果您喜欢更通用的方式,请按此处。您可以根据需要添加更多转换器。
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询问如何获取enum
C#中所有值的数组?
如果要enum
在C#中获取选定值的数组怎么办?
您的枚举
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();
学分归于知识渊博的tl。
参考文献:
希望可以帮助某人。