当前位置:首页 > 什么是装箱和拆箱?

什么是装箱和拆箱?

装箱:从值类型接口转换到引用类型。

拆箱:从引用类型转换到值类型。


    装箱是将值类型转换为 object 类型或由此值类型实现的任一接口类型的过程。当 CLR 对值类型进行装箱时,会将该值包装到System.Object 内部,再将后者存储在托管堆上。取消装箱将从对象中提取值类型。在下面的示例中,整型变量 i 装箱并赋给对象 o。

int i = 123;

object o = (object)i;  //装箱

o = 123;

i = (int)o;  // 拆箱


    相对于简单的赋值而言,装箱和取消装箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个新对象。次之,取消装箱所需的强制转换也需要进行大量的计算。

    装箱用于在垃圾回收堆中存储值类型。装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。对值类型装箱会在堆中分配一个对象实例,并将该值复制到新的对象中。