Как насчет:
MyEnum? val = value == null ? (MyEnum?) null : (MyEnum) value;
Приведение в штучной упаковке int
к MyEnum
(если value
не равно нулю), а затем используется неявное преобразование из MyEnum
в Nullable<MyEnum>
.
Это нормально, потому что вы можете распаковать из упакованной формы перечисления в его базовый тип или наоборот.
Я полагаю, что на самом деле это преобразование, которое не гарантированно работает в спецификации C #, но гарантированно работает в спецификации CLI. Так что, пока вы выполняете свой код C # в реализации CLI (которой вы будете :), все будет в порядке.