C# 中的装箱与拆箱

转角撞倒猪 原文 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 的改变将互不影响(已验证)。

 

posted @ 2016-10-11 08:49  wenglabs  阅读(317)  评论(0编辑  收藏  举报