装箱是值类型到引用类型的转换。在.NET内存模型中,值类型分配在内存栈上,引用类型分配在堆上。装箱之后,值类型会被放置到堆上,然后再栈上创建一个对象引用(类似于指针)指向这个值类型。例如MSDN上这个例子int i = 123;object o = i;i = 456;i是值类型,可以存储不同的值,执行的时候i=456,o仍然是123。因为o是i的装箱,它引用的是分配在堆上的一块内存地址,i的原值123被复制到在这个内存地址。之后你再修改i,就不会影响到o。取消装箱是一个逆操作。之所以会有这种说法,是因为值类型和引用类型的分配位置不同,而有时候必须实现各种类型转换(例如值类型转为object,参见ArrayList类),所以有装箱...