Hi
Как преобразовать enum
в IList
?
Предположим, вы хотите, чтобы прочитать все элементы в FormWindowState
перечисление и возвращать IList<FormWindowState>
содержащий Normal
, Minimized
и Maximized
Преобразование типа Enum в IList
ответ
Используйте Enum.GetValues()
. Например:
var list = (IList<FormWindowState>) Enum.GetValues(typeof(FormWindowState));
Это фактически возвращает FormWindowState[]
но который реализует IList<T>
надлежащим образом в любом случае.
Если вы много работаете с перечислениями и хотите более безопасный тип, вы можете посмотреть мой проект Unconstrained Melody.
IList<FormWindowState> myList;//instantiate it with a concrete collection.
myList.Add(FormWindowsState.Normal);
myList.Add(FormWindowsState.Minimized);
myList.Add(FormWindowsState.Maximized);
Это только для этого случая, когда у вас есть только 3 члена перечисления. В противном случае используйте решение Jon Skeet.
Если вы * хотели * явно добавить их, по крайней мере, было бы лучше использовать инициализатор коллекции вместо явных вызовов Add. –
Да, вы правы, я все еще работаю в основном с .NET 2.0 и не использовал так много, чтобы использовать новые языковые функции. +1 для комментариев. –
Вы все еще можете использовать инициализаторы коллекции в .NET 2.0, пока вы строите компилятор C# 3. Если вы используете VS2005, у вас есть мои симпатии :( –
Разве не лучше использовать: var list = (IList) Enum.GetValues (typeof (FormWindowState)). Cast (); –
Lelis718