2010-11-09 4 views
1

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 MaximizedConversion d'un type Enum en IList

Répondre

8

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.

+0

N'est-il pas préférable d'utiliser: var liste = (IList ) Enum.GetValues ​​(typeof (FormWindowState)). Cast (); – Lelis718

0
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.

+1

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. –

+0

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. –

+0

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 :( –