装箱(boxing)和拆箱(unboxing)的讨论
DLFOX 2003-08-17 02:26:58 .NET Framework 的一重要特点是 CTS(通用类型系统),并通过装箱(boxing)和拆箱(unboxing) 实现值类型与引用类型之间的转换。在下例中
using System;
class TestBoxing
{
public static void Main()
{
int i=123;
object obj1=i;
Console.WriteLine("The value i={0}",i);
Console.WriteLine("The object-type value obj1={0}",obj1);
i=456;
Console.WriteLine("The value i={0}",i);
Console.WriteLine("The object-type value obj1={0}",obj1.ToString ());
object obj2=obj1;
Console.WriteLine("The object-type value obj1={0}",obj1);
Console.WriteLine("The object-type value obj2={0}",obj2);
obj2=100;
Console.WriteLine("The object-type value obj1={0}",obj1);
Console.WriteLine("The object-type value obj2={0}",obj2);
}
}
obj1 和 obj2 都是引用类型(object),二者应该指向的是同一个内存地址,那么对其中一个对象的修改应该会影响到另一个,但实际运行却并非这样,不知为什么?另外,从值类型到引用类型的装箱转换到底有什么实际的用途呢?