Как получить массив всех значений enum в C#?
у меня есть перечисление, которое я хотел бы отобразить все возможные значения. Есть ли способ получить массив или список всех возможных значений перечисления вместо того, чтобы вручную создавать такой список? например, если у меня есть перечисление:
public enum Enumnum { TypeA, TypeB, TypeC, TypeD }
как бы я мог получить List<Enumnum>
, которая содержит { TypeA, TypeB, TypeC, TypeD }
?
10 ответов:
Это дает вам простой массив значений enum с помощью
Enum.GetValues
:var valuesAsArray = Enum.GetValues(typeof(Enumnum));
и это дает вам общий список:
var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();
попробуйте этот код:
Enum.GetNames(typeof(Enumnum));
это возвращение a
string[]
со всеми именами перечисления выбранного перечисления.
вы можете сделать так:
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
.
можно использовать
Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray();
Это возвращает массив!
С этого:
string[] myArray = Enum.GetNames(typeof(Enumnum));
и вы можете получить доступ к массиву значений, например:
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>();
также вы можете использовать
var enumAsJson=typeof(SomeEnum).Name + ":[" + string.Join(",", Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().Select(e => e.ToString())) + "]";
для получения всех элементов в перечислении в формате json.
ОП спросил, Как получить массив всех
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.
ссылки:
Надежда помогает кому-то.