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 的改变将互不影响(已验证)。

原文地址:https://www.cnblogs.com/arxive/p/5947932.html