装箱:为了将一个值类型转换为一个引用类型,就要使用一种叫装箱的机制。Int32 a=5;Object o=a;
对值类型的装箱时内部发生的事情如下:
1,首先在托管堆中分配内存,大小为值类型字段所需内存量加上额外成员(类型对象指针和同步索引块)大小。
2,值类型字段复制到新分配的堆内存。
3,返回对象的引用。
拆箱:首先,拆箱不是装箱的逆过程,它其实是获取一个指针的过程,指针指向一个对象中的原始值类型。
拆箱之后,紧接着是字段的复制过程。
在对一个对象拆箱的时候,只能将其转化为原来未装箱的值类型。例如:Int32 x=5; Object o=x; Int16 y=(Int16)o;
这时候就会发生异常。可以这样来写:Int16 y=(Int16)(Int32)o;必须首先转化为原来的类型。
FO/f鄀HY緗汻