是这样吗?
值类型转到引用类型,会把栈中的数据拷贝到托管堆中,再构建一个引用对象,
引用类型转到值类型,会把托管堆中的对象拷贝到栈中,再销毁引用对象

解决方案 »

  1.   

    像指针的指针...但不要这么去理解,引用和指针的概念差别还是比较大的...托管对象的引用地址是可变的,GC清理托管堆时很可能移动对象,引用地址会改变,一般看到也没用...所以.NET中一般不关心内存地址...
      

  2.   

    不要乱扯装拆箱...装拆箱仅指与值类型与object类型及值类型实现的接口类型之间的转换操作...严格不严格地讲,装拆箱都属于类型转换...而自定义的值类型与引用类型转换跟装拆箱扯不上关系...
      

  3.   


    我只不过引用了下《CLR via C#》里面的内容为了将一个值类型转换成一个引用类型,要使用一个名为装箱(boxing)的机制。下面总结了对值类型的一个实例进行装箱操作时在内部发生的事情: 
    1.  在托管堆中分配好内存。分配的内存量是值类型的各个字段需要的内存量加上托管堆的所有对象
    都有的两个额外成员(类型对象指针和同步块索引)需要的内存量。 
    2.  值类型的字段复制到新分配的堆内存。 
    3.  返回对象的地址。现在,这个地址是对一个对象的引用,值类型现在是一个引用类型。一个已装箱的值类型实例在拆箱时,内部会发生下面这些事情: 
    1.  如果包含了“对已装箱值类型实例的引用”的变量为 null,就抛出一个NullReferenceException 异
    常。 
    2.  如果引用指向的对象不是所期待的值类型的一个已装箱实例,就抛出一个 InvalidCastException 异
    常。42