CLR via C#第五章:值类型的装箱拆箱操作

          定义:将值类型转换成引用类型 

           有时候函数的形参是个引用类型,但是传过去的是个值类型。这时候就存在一个类型转换。这个过程叫做装箱。

           装箱在内存上的实现:

            值类型存在栈上,而引用类型是在堆上的。在装箱过程中,先是在堆上创建一个引用类型,这个引用类型的大小为:这个值类型各个属性值的大小,加上所有引用类型所具有的两个额外成员大小(类型对象指针和同步索引块)

  1. 装箱
  2. 拆箱

          定义:将引用类型转换成值类型 

         拆箱在内存中的实现,主要是两个步骤:

  • 获取已装箱类型的未装箱部分的指针(也就是获取引用类型的值类型指针)
  • 将字段值复制到栈上的值类型实例中
  • 注意:如果获取的引用类型的指针为null或者引用类型的字段值不是所期待的已装箱实例,就会发生异常

    eg:

 Int32 x = 5;
 object o = x;
 Int16 y =(Int32)o;

必须加上强制类型转换才行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值