C#的装箱和拆箱

C#的装箱和拆箱

using System;

namespace testBoxingApp
{
 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 class Class1
 {
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
   //
            /*
             * 在理解装箱和拆箱的概念之前,现了解一下有关的基本概念:
             * 1)在.net中的通用类型系统(common type system)中,所有的类型都是对象,都是派生自system.object。
             * 2)CTS支持两组类型:值类型和引用类型。值类型的变量包含实际数据,会在内存中分配空间;引用类型的变量类型指针,而没有在
             * 内存中分配空间。
             * 3)装箱:将值类型转换成引用类型的过程(隐式转换)
             * 4)拆箱:将引用类型转换成值类型的过程(显示转换)
             由于在C#2.0中引入了泛型的概念,取代了装箱和拆箱,所以这里就不再赘述了。
             */
   short i = 1;
   object ōbjectOne = i; //装箱,隐式类型转换
   Console.WriteLine ("{0} Boxing to object:{1}",ObjectOne.GetType(),ObjectOne);
   short j;    
   j = (short)ObjectOne; //拆箱,显示类型转换
   Console.WriteLine ("object Unboxing to short :{0}",j);
   
   try      //错误的拆箱
   {
    int k;
    k = (int)ObjectOne;
    Console.WriteLine ("object Unboxing to int: {0}",k);
   }
   catch(InvalidCastException ex){
    Console.WriteLine ( ex.Message );
   }

   object ōbjectTwo = new Class2 ();
   try      //错误的拆箱
   {
    short m;
    m = (short)ObjectTwo;
    Console.WriteLine ("object Unboxing to short :{0}",m);
   }
   catch(InvalidCastException ex)
   {
    Console.WriteLine ( ex.Message );
   }

   Class2 aRef;   //Class2的一个引用变量
   aRef = (Class2) ObjectTwo;
   Console.WriteLine (aRef.s );
  }
 }

 class Class2
 {
  public short s;
  public Class2()
  {
   Console.WriteLine ("A Class2 Object!");
   s = 10;
  }
 }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值