Salut
Comment puis-je convertir un enum
en IList
?
Supposons que vous voulez lire tous les éléments FormWindowState
ENUM, et retourner un IList<FormWindowState>
contenant Normal
, Minimized
et Maximized
Conversion d'un type Enum en IList
Répondre
Utilisez Enum.GetValues()
. Par exemple:
var list = (IList<FormWindowState>) Enum.GetValues(typeof(FormWindowState));
Il retourne en fait un FormWindowState[]
mais qui met en oeuvre IList<T>
appropriée de toute façon.
Si vous travaillez beaucoup avec des énumérations et que vous souhaitez une approche plus sûre du type, vous pouvez également consulter mon projet Unconstrained Melody.
IList<FormWindowState> myList;//instantiate it with a concrete collection.
myList.Add(FormWindowsState.Normal);
myList.Add(FormWindowsState.Minimized);
myList.Add(FormWindowsState.Maximized);
Ceci est juste pour ce cas, quand vous avez seulement 3 membres enum. Sinon, utilisez la solution de Jon Skeet.
Si vous * vouliez * les ajouter explicitement, il serait au moins plus agréable d'utiliser un initialiseur de collection au lieu d'ajouter des appels explicites. –
Ouais, vous avez raison, je travaille toujours principalement avec .NET 2.0 et pas beaucoup utilisé pour utiliser les nouvelles fonctionnalités du langage. +1 pour le commentaire aussi. –
Vous pouvez toujours utiliser des initialiseurs de collection dans .NET 2.0 tant que vous compilez avec le compilateur C# 3. Si vous utilisez VS2005, vous avez mes sympathies :( –
N'est-il pas préférable d'utiliser: var liste = (IList) Enum.GetValues (typeof (FormWindowState)). Cast (); –
Lelis718