Приведение <int> .Cast <int?>, Примененное к общей коллекции перечислений, приводит к недопустимому исключению приведения.
enum Gender { Male, Female }
var k = new[] { Gender.Male }.Cast().ToList().Cast().ToList(); //alright
var p = new[] { Gender.Male }.Cast().Cast().ToList(); //InvalidCastException
В чем причина второго случая? Я знаю, я не могу бросить в штучной упаковкеenum
вint?
напрямую, но я делаю два этапа кастинга, т.е.Cast.Cast
который должен работать.
Редактировать:
Это удивительно, учитывая следующие работы:
object o = Gender.Male;
int i = (int)o; // so here the cast is not to an entirely different type, which works