C#的装箱转换

 

装箱转换是指将一个值类型隐式地转换成一个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 System
class 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;

这就证明了,被装箱的类型的值是作为一个拷贝赋给对象的。


本文来自编程入门网:http://www.bianceng.cn/Programming/csharp/200709/4334.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值