相关疑难解决方法(0)

盒装可空的底层类型可以转换为枚举,但盒装枚举类型不能转换为可空类型

  • 盒装可空的底层类型可以转换为枚举,但盒装枚举类型不能转换为可空类型.

同样地,

  • 盒装可空枚举可以转换为底层类型,但盒装底层类型不能转换为可以为空的枚举.

好吧,我知道"盒装可空类型"并不是描述它的最佳方式,但这是为了问题.我知道这是基础价值类型的盒装.

我将用例子来展示它.假设我有一个enumwith int作为底层类型.

enum Sex { Male, Female }
Run Code Online (Sandbox Code Playgroud)

案例I:

int? i = 1;
object o = i;
Sex e = (Sex)o; //success

//but

Sex e = Sex.Male;
object o = e;
int? i = (int?)o; //invalid cast
Run Code Online (Sandbox Code Playgroud)

案例二:

Sex? e = Sex.Male;
object o = e;
int i = (int)o; //success

//but

int i = 1;
object o = i;
Sex? e = (Sex?)o; //invalid …
Run Code Online (Sandbox Code Playgroud)

c# enums boxing casting nullable

5
推荐指数
1
解决办法
203
查看次数

标签 统计

boxing ×1

c# ×1

casting ×1

enums ×1

nullable ×1