object o = i; 此语句的结果是在堆栈上创建对象 o,而该对象在堆上引用 int 类型的值。该值是赋给变量 i 的值类型值的一个副本。下图说明了两个变量 i 和 o 之间的差异。
装箱转换 在堆栈上 在堆上 i 123 int i=123; o (将i装箱) object o=i; int 123 也可以(但绝不必要)如下例所示显式执行装箱: int i = 123; object o = (object) i; 示例 此例将整数变量 i 通过装箱转换为对象 o。这样,存储在变量 i 中的值就从 123 更改为 456。此例显示对象保留了内容的原始副本,即 123。 // boxing.cs // boxing an integer variable using system; class testboxing { public static void main() { int i = 123; object o = i; // implicit boxing i = 456; // change the contents of i console.writeline("the value-type value = {0}", i); console.writeline("the object-type value = {0}", o); } } 输出 the value-type value = 456 the object-type value = 123