码迷,mamicode.com
首页 > 其他好文 > 详细

装箱与拆箱

时间:2019-02-19 01:22:31      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:png   学习   clr   []   image   操作   nbsp   stat   void   

在C#中,装箱和拆箱在值类型和引用类型的类型转换时发生。将值类型转换为引用类型通过装箱机制;将引用类型装换为值类型伴随着拆箱。

将值类型装箱:

  1. 在托管堆中分配内存
  2. 将值类型字段复制到新分配的堆内存
  3. 返回对象地址

引用类型拆箱操作:

  1. 获取已装箱对象的地址(该过程称作拆箱)
  2. 将对象包含的值复制到栈中
 static void Main(string[] args)
 {
       int varX = 10;

       object objX = varX;//装箱

       int varY = (int)objX;//拆箱复制值
            
 }

查看对比IL代码

 

技术图片

确切来说,装箱和拆箱不是两个互倒的过程,拆箱之后紧接着有一次字段复制操作。

 201902学习CLR

装箱与拆箱

标签:png   学习   clr   []   image   操作   nbsp   stat   void   

原文地址:https://www.cnblogs.com/Hkafeidou/p/10398718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!