Заполните все опции Enum в массив Nullable <Enum> - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть Enum, который должен войти в Array, то есть Nullable:

StatusType?[] statusTypes = null; //Array to fill

Я пытался заполнить statusTypes так:

statusTypes = (StatusType?[])Enum.GetValues(typeof(StatusType))

Я получаю следующую ошибку:

System.InvalidCastException: 'Невозможно привести объект типа' x.Entities.Enums.StatusType [] 'к типу' System.Nullable`1 [x.Entities.Enums.StatusType] [] '.'

Как мне заполнить Enum?[] Enum[]? Я уверен, что это легко исправить, но я немного озадачен этим. Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Используйте метод расширения Cast<T>() LINQ и укажите тип цели:

statusTypes = Enum.GetValues(typeof(StatusType)).Cast<StatusType?>().ToArray();
0 голосов
/ 28 апреля 2018

Вы не можете просто разыграть массивы. Типы не совместимы. Вы можете использовать Array.ConvertAll для преобразования:

Array.ConvertAll((StatusType[])Enum.GetValues(typeof(StatusType)), x => (StatusType?)x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...