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