大家好。里希特的书中写道:
当装箱一个 Nullable<T> 实例时,会检查它是否为 null,如果是,则返回 null 而不是装箱。否则,CLR 将把实例值装箱。下面的代码演示了这种行为:
// После упаковки Nullable<T> возвращается null или упакованный тип T
Int32? n = null;
Object o = n; // o равно null
是的,当然,o == null,但我认为不应该有任何包装,但是有:
IL_0008: ldloc.0 // n
IL_0009: box valuetype [System.Runtime]System.Nullable`1<int32>
IL_000e: stloc.1 // o
IL_000f: ret
有人能解释为什么会发生这种情况吗?或者说这些信息已经过时了?