Explain about vsual c# box and nu-box

简单的说,装箱就是将值类型(value type)转换为引用类型(reference type)的过程;反之,就是拆箱。

        频繁装箱和拆箱操作会降低程序效率,因此在编写的时候要尽量避免(比如2.0中的泛型概念)。 

    .NET中所有类型都是对象,所有类型的根是System.Object。
     类型分为值类型(value)和引用类型(regerence type)。C#中定义的值类型包括:原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct)。引用类型包括:类、数组、接口、委托、字符串等。

实例一:读下列程序,你能说出其中进行了几次装箱和拆箱的操作吗?

using System;
class sample1
{
  public static void Main()
  {
    int i=10;
    object obj=i;
    Console.WriteLine(i+","+(int)obj);
  }

         其中发生了三次装箱操作和一次拆箱操作。第一次object obj=i;将i装箱;而Console.WriteLine方法用的参数是String对象,因此,i+","+(int)obj中,i需要进行一次装箱(转换成String对象),(int)obj将obj对象拆箱成值类型,而根据WriteLine方法,比较将(int)obj值装箱成引用类型。

示例参考:http://www.itwis.com/html/net/c/20080402/1183.html

                    http://www.cnblogs.com/adbosl/archive/2006/05/15/400533.html (性能分析)

                    http://www.cnblogs.com/qunews/archive/2007/10/03/913349.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值