基于可空类型的对象只在该对象为非空时才会装箱。如果
![]() | |
---|---|
bool? b = null; object o = b; // Now o is null. |
如果对象非空,也就是说,如果 HasValue 为 true,则会发生装箱过程,但只将可空对象所基于的基础类型装箱。如果将非空的可空值类型装箱,将使值类型本身(而不是包装该值类型的
![]() | |
---|---|
bool? b = false; int? i = 44; object bBoxed = b; // bBoxed contains a boxed bool. object iBoxed = i; // iBoxed contains a boxed int. |
对于那些通过装箱非可空类型而创建的类型来说,两种装箱对象是完全相同的。并且,像非可空装箱类型一样,可以将它们取消装箱,使其成为可空类型,如下所示:
![]() | |
---|---|
bool? b2 = (bool?)bBoxed; int? i2 = (int?)iBoxed; |