J'ai une énumération dont j'aimerais afficher toutes les valeurs possibles. Existe-t-il un moyen d'obtenir un tableau ou une liste de toutes les valeurs possibles de l'énumération au lieu de créer manuellement une telle liste? Par exemple, si j'ai une énumération:
public enum Enumnum { TypeA, TypeB, TypeC, TypeD }
comment pourrais-je obtenir un List<Enumnum>
qui contient { TypeA, TypeB, TypeC, TypeD }
?
Réponses:
Cela vous donne un tableau simple des valeurs d'énumération en utilisant
Enum.GetValues
:var valuesAsArray = Enum.GetValues(typeof(Enumnum));
Et cela vous donne une liste générique:
var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();
la source
Enumnum.GetValues()
etEnumnum.GetNames()
n'existe pas.var valuesAsArray = (Enumnum[])Enum.GetValues(typeof(Enumnum));
.Enum.GetValues(typeof(Enumnum)).Cast<ActualType>().ToList();
ActualType
signifier? Pour une énumération, ce seraitEnumnum
dans l'exemple de l'OP, ou ce pourrait être le type sous-jacent (généralementint
). Avez-vous autre chose en tête?Essayez ce code:
Enum.GetNames(typeof(Enumnum));
Ceci renvoie un
string[]
avec tous les noms d'énumération de l'énumération choisie.la source
Enum.GetValues(typeof(Enumnum));
renvoie un tableau des valeurs de Enum.
la source
Vous voudrez peut-être faire comme ceci:
public enum Enumnum { TypeA = 11, TypeB = 22, TypeC = 33, TypeD = 44 }
Toutes les valeurs int de ceci
enum
sont11,22,33,44
.Vous pouvez obtenir ces valeurs par ceci:
var enumsValues = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList().Select(e => (int)e);
string.Join(",", enumsValues)
est11,22,33,44
.la source
Quelque chose de peu différent:
typeof(SomeEnum).GetEnumValues();
la source
avec ça:
string[] myArray = Enum.GetNames(typeof(Enumnum));
et vous pouvez accéder au tableau de valeurs comme ceci:
Array myArray = Enum.GetValues(typeof(Enumnum));
la source
Vous pouvez utiliser
Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray();
Cela renvoie un tableau!
la source
Si vous préférez une manière plus générique, la voici. Vous pouvez ajouter plus de convertisseurs selon vos besoins.
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)); } }
Exemples d'implémentations:
string[] roles = EnumConverter.ToStringArray<ePermittedRoles>(); List<ePermittedRoles> roles2 = EnumConverter.ToListOfValues<ePermittedRoles>(); Array data = EnumConverter.ToValueArray<ePermittedRoles>();
la source
aussi vous pouvez utiliser
var enumAsJson=typeof(SomeEnum).Name + ":[" + string.Join(",", Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().Select(e => e.ToString())) + "]";
pour obtenir tous les éléments enum au format json.
la source
L'OP a demandé comment obtenir un tableau de toutes les
enum
valeurs en C #?Que faire si vous souhaitez obtenir un tableau de
enum
valeurs sélectionnées en C #?Votre énumération
enum WeekDays { Sunday, Monday, Tuesday }
Si vous souhaitez simplement sélectionner
Sunday
votre fichierEnum
.WeekDays[] weekDaysArray1 = new WeekDays[] { WeekDays.Sunday }; WeekDays[] weekDaysArray2 = Enum.GetValues(typeof(WeekDays)).Cast<WeekDays>().Where (x => x == WeekDays.Sunday).ToArray();
Crédits va à tl bien informé.
Références:
1.
2.
L'espoir aide quelqu'un.
la source