什么是拆箱和装箱?举例说明

it2022-05-05  101

1.装箱,值类型向引用类型转换:

    在托管堆中分配内存,分配的内存量是类型各字段所需的内存量+类型对象指针所需的内存量+同步块索引所需的内存量。

    值类型的字段复制到分配好的内存中

    返回对象地址,现在对象地址是对象引用

2.拆箱,引用类型向值类型转换:

    获取已装箱类型中的未装箱部分,也就是对象的原始值的各个字段

    复制字段的值从堆中到栈中的值类型实例中

 

//装箱的例子 //装箱允许将值类型隐式转化成引用类型还是在Main方法里面 iint i = 2008; object obj = i; Console.WriteLine("1.i的值为{0},装箱之后的对象为{1}",i,obj); i = 927; Console.WriteLine("2.i的值为{0},装箱之后的对象为{1}",i,obj); Console.ReadKey(); //程序运行结果 //1.i的值为2008,装箱之后的对象为2008. //2.I的值为927,装箱之后的对象为2008 //拆箱例子 //拆箱允许将引用类型显示转换为值类型,下面通过一个实例演示拆箱的过程 int i = 112; object obj = i; Console.WriteLine("装箱操作:值为{0},装箱之后的对象为{1}",i,obj); int j = (int)obj; Console.WriteLine("拆箱操作,装箱的对象为{0},值为{1}", obj, j); Console.ReadKey(); //程序运行后的结果 //装箱操作:值为112,装箱之后对象为112 //拆箱操作:装箱对象为112,值为112

 


最新回复(0)