装箱与拆箱/复制内存

1、值类型和引用类型的区别
   任何一个值类型都是线程堆栈上的一块内存,而引用类型则是托管堆上的一块内存,值类型多个变量不能共享一款内存、但引用类型可以多个应用类型对应一个托管堆上的一块内存。
2、变量的存放位置与值类型、引用类型有关
   在非托管时代,例如:VC++决定变量的存储位置是堆还是栈的是有开发人员。而在托管时代,值类型变量一定存储在线程堆栈上,引用类型一定存储在托管堆上。
3、装箱《==》拆箱是一种错误的认识
   a、装箱的过程:值类型转换为引用类型时发生装箱,首先在托管堆上分配一块内存,然后将值和其他附件信息复制到托管堆上新分配的内存上。
   b、拆箱过程:引用类型转换为值类型时发生拆箱,只是取出托管堆上的引用类型的值元素,并没有在线程堆栈上分配空间。
   c、拆箱后复制内存:将拆箱后得到的值元素赋给在线程堆栈上的值类型。
   由此可知,装箱和拆箱并不是互逆的过程,‘装箱’应该和‘拆箱/复制内存’是互逆的过程,相对而言,装箱的过程比拆箱的过程要复杂,因为装箱是在托管堆上新开辟了一块内存,而拆箱的过程仅仅是读出托管堆上的引用类型的值元素。
4、小结
   在下列情况下应尽量使用引用类型的变量(后续完成)。
   
  

转载于:https://www.cnblogs.com/kuailewangzi1212/archive/2007/04/18/717765.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值