在C#中,引用类型和值类型是怎么样转换的?

解决方案 »

  1.   

    值类型转换为引用类型称为装箱,具体步骤是:
    1.从托管堆中分配好内存。
    2.值类型的字段复制到新分配的堆内存。
    3.返回对象地址。现在这个地址是一个对象的引用。拆箱并不是刚好将装箱操作逆转过来那么简单。相对于装箱操作,拆箱操作的代价要低得多。
    拆箱其实就是获取一个指针的过程,该指针指向包含在一个对象中的原始值类型。
    拆箱机制的内部具体步骤如下:
    1.包含对已拆箱的值类型实例的引用的变量如果为null,就抛出一个NullReferenceException异常。
    2.如果引用指向的对象不是所要求的值类型的一个已装箱实例,就抛出一个InvalidCastException异常。