天天看点

C# 中的装箱与拆箱

  装箱:将一个数据项(副本)从栈中自动复制到堆中的行为。

int i = 8;  
object o = i;   // 装箱 // 首先在堆中开辟出一片区域,再将 i 的一个副本放在该区域中。  
                        // 所有引用都必须引用堆上的对象      

   引用关系如下所示:

 PS:o 和 i 的改变将互不影响,因为装箱使用的是 i 的一个副本。

 拆箱:将一个数据项(副本)从堆中自动复制到栈中的行为。

int i = 8;  
    object o = i;   // 装箱  
    i = (int)o;     // 拆箱 // 此处使用强制类型转换(cast)      

         引用关系如下所示:        

        PS:o 和 i 的改变将互不影响(已验证)。

你们的评论、反馈,及对你们有所用,是我整理材料和博文写作的最大的鼓励和唯一动力。欢迎讨论和关注!

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。

永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧!

多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。