C#中enum强制转换为int是否属于拆箱操作?
问题解答
你给出的代码如下:
enum Season { spring, summer, fall, winter } int a = (int)Season.spring;
结论
上述强制转换属于普通值类型转换,不属于拆箱操作,你原本的判断是正确的。
具体说明
- 拆箱的定义是将已经装箱存储在堆上的
object或接口类型实例,还原为对应值类型的操作,必须对应前置的装箱操作,且会产生运行时类型校验开销。 - C#中的枚举属于值类型,默认底层存储类型就是
int,枚举成员本质是绑定了对应整数值的强类型常量。(int)Season.spring的转换逻辑在编译阶段就已确定,运行时仅直接读取枚举持有的底层整数值完成赋值,全程没有涉及引用类型的操作,也不存在运行时类型校验,完全符合普通值类型转换的特征。
内容的提问来源于stack exchange,提问作者user16889964
相关产品推荐
相关产品推荐

