У меня есть перечисление, в котором я хотел бы отобразить все возможные значения. Есть ли способ получить массив или список всех возможных значений перечисления вместо создания такого списка вручную? например, если у меня есть перечисление:
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();
источник
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));
Это возвращает a
string[]
со всеми именами перечисления выбранного перечисления.источник
Enum.GetValues(typeof(Enumnum));
возвращает массив значений в Enum.
источник
Вы можете сделать вот так:
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
.источник
Что-то немного другое:
typeof(SomeEnum).GetEnumValues();
источник
с этим:
string[] myArray = Enum.GetNames(typeof(Enumnum));
и вы можете получить доступ к массиву значений следующим образом:
Array myArray = Enum.GetValues(typeof(Enumnum));
источник
Ты можешь использовать
Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray();
Это возвращает массив!
источник
Если вы предпочитаете более общий способ, вот он. Вы можете добавить больше конвертеров по своему усмотрению.
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.
источник
OP спросил, как получить массив всех
enum
значений в 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();
Кредиты достаются знающим тл.
Ссылки:
1.
2.
Надежда кому-то помогает.
источник