2010-11-09 2 views
1

Hi
Как преобразовать enum в IList?
Предположим, вы хотите, чтобы прочитать все элементы в FormWindowState перечисление и возвращать IList<FormWindowState> содержащий Normal, Minimized и MaximizedПреобразование типа Enum в IList

ответ

8

Используйте Enum.GetValues(). Например:

var list = (IList<FormWindowState>) Enum.GetValues(typeof(FormWindowState)); 

Это фактически возвращает FormWindowState[] но который реализует IList<T> надлежащим образом в любом случае.

Если вы много работаете с перечислениями и хотите более безопасный тип, вы можете посмотреть мой проект Unconstrained Melody.

+0

Разве не лучше использовать: var list = (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); 

Это только для этого случая, когда у вас есть только 3 члена перечисления. В противном случае используйте решение Jon Skeet.

+1

Если вы * хотели * явно добавить их, по крайней мере, было бы лучше использовать инициализатор коллекции вместо явных вызовов Add. –

+0

Да, вы правы, я все еще работаю в основном с .NET 2.0 и не использовал так много, чтобы использовать новые языковые функции. +1 для комментариев. –

+0

Вы все еще можете использовать инициализаторы коллекции в .NET 2.0, пока вы строите компилятор C# 3. Если вы используете VS2005, у вас есть мои симпатии :( –