装箱操作:
1.从托管堆中分配好内存。分配的内存是值类型的各个字段所需要的内存量加上同步块和方法表指针所需的内存量
2.值类型的字段复制到新分配的堆内存中。
3.返回对象的地址,这个地址是是一个对象的引用,值类型是一个引用类型。
拆箱操作:
1.检查装箱引用,如果为Null,抛出NullReferenceExxeption异常。
2. 根据显示类型转换过程中的声明,来检查装箱对象的类型,如果不是,抛出InvalidCastException异常。
3.将该值从实例复制到值类型变量中。
现在举个例子说明:
class BoxAndUnboxTest
{
static void Main()
{
int i = 123;
object o = i;//First Boxing
i = 456;
Console.WriteLine(i+//second boxing
","+
(int)o);//third Boxing and first boxing
}
}