Welcome

首页 / 软件开发 / C# / C#的装箱转换

C#的装箱转换2007-09-09 本站 装箱转换是指将一个值类型隐式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)。把一个值类型的值装箱,也就是创建一个object实例并将这个值复制给这个object,比如:

int i=10;
object obj=i;

用下图可以表示装箱的过程:

 

我们也可以用显式的方法来进行装箱操作:

int i=10;
object obj=object(i);

我们可以假想存在一个boxing类型,其声明如下:

class T_Box
{
    T value;
    T_Box(Tt){
    value=t;
}//该类型的构造函数
}
这里T表示将要装箱的值的类型,它可以是int、char、enum等等。现在我们要将类型为T的值v装箱,其执行过程为:执行new T_Box(v),将返回结果的实例作为对象类型的值,那么下面的语句:

int i=10;
object obj=i;

等价于:

int i=10;
object obj=new int_Box(i); //装i装箱成对象obj

我们看一下下面的程序。

程序清单4-4:

using Systemclass Test{public static void Main(){int i=10;object obj=i; //对象类型if(obj is int){Console.Write("The value of i is boxing!");}i=20;//改变i的值Console.WriteLine("int:i={0}",i);Console.WriteLine("object:obj={0}",obj);}}输出结果为:The value of i is boxing!int:i=20;object:obj=10;这就证明了,被装箱的类型的值是作为一个拷贝赋给对象的。