这个MSDN引用似乎表明,当一个int?(或任何一个Nullable<T>)有一个值时,它总是被装箱(因此数据存储效率低得多int).是这样的吗?
Jus*_*ner 13
该页面指的是装箱Nullable<T>结构时,而不是结构本身内部的值.
在您尝试装入可以为空的本身之前,存储可空类型不涉及装箱:
int? a = 42; // no boxing
int? n = null; // no boxing
object nObj = n; // no boxing
object aObj = a; // only now will boxing occur
Run Code Online (Sandbox Code Playgroud)
这种行为与装箱常规值类型(处理空案例除外)没有什么不同,所以它确实是预料之中的.