【学习笔记】C#中的装箱(inboxing)和拆箱(unboxing)

装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。 

装箱:将一个值类型隐式地转换成一个object类型,或把这个值类型转换成一个被该值类型应用的接口类型,把一个值类型的值装箱,就是创建一个object实例并将值复制给这个object
拆箱:和装箱相反,拆箱转换是指将一个对象类型显式地转换成一个值类型,或将一个接口类型显式地转换成一个执行该接口的值类型。
object obj = null;
obj = 1;//装箱,把值类型包装成引用类型。
int num = (int)obj;// 拆箱,显示类型转换。

拆箱操作的执行过程和装箱操作过程正好相反,是将存储在堆上的引用类型值转换为值类型并给值类型变量。

装箱操作和拆箱操作是要额外耗费cpu和内存资源的,所以在c# 2.0之后引入了泛型来减少装箱操作和拆箱操作消耗。

原文地址:https://www.cnblogs.com/kudsu/p/7686858.html