专注于自动化测试,性能测试.......

C#的装箱和拆箱

上一篇 / 下一篇  2008-03-07 10:21:36 / 个人分类:C# Programming

7?F0|~,U%a%x0C#的装箱和拆箱51Testing软件测试网-M/ej!_H J

g1O;go;B9Ih0using System;51Testing软件测试网y1yw1^)Fbvz A4j

$bg8p:RKz;g+]n0namespace testBoxingApp
8p(eE0ka'`&~0{51Testing软件测试网(]#s5F-Jq#N
 /// <summary>
o Ss y cJ0 /// Class1 的摘要说明。51Testing软件测试网(L'r X.[4BZt
 /// </summary>
t(k{9E]&u0 class Class1
F)`4BDC4P0 {51Testing软件测试网5Q0\ k,Q8B)PBWR/K
  /// <summary>51Testing软件测试网/a:it Xh
  /// 应用程序的主入口点。
Qx9Kl}c0  /// </summary>51Testing软件测试网I7^qz1Q
  [STAThread]
:nh#] x*A5K5Z|0  static void Main(string[] args)51Testing软件测试网2A1_(f,@b5M
  {51Testing软件测试网Kn@RK f
   //51Testing软件测试网] s~ V\
   // TODO: 在此处添加代码以启动应用程序
bN6i_ b1v;pzEh0   //51Testing软件测试网)OD nS%?X'U7W
           /*51Testing软件测试网EV k.E2yUjh(\
             * 在理解装箱和拆箱的概念之前,现了解一下有关的基本概念:
f"x8x c'{9RTH2us0             * 1)在.net中的通用类型系统(common type system)中,所有的类型都是对象,都是派生自system.object。
!N x e0c6E4geE4H0             * 2)CTS支持两组类型:值类型和引用类型。值类型的变量包含实际数据,会在内存中分配空间;引用类型的变量类型指针,而没有在51Testing软件测试网8RJ G3xun
             * 内存中分配空间。
7\(e9li)`-Z_d1~x |0             * 3)装箱:将值类型转换成引用类型的过程(隐式转换)51Testing软件测试网!cm?.E/T t#q.m"k
             * 4)拆箱:将引用类型转换成值类型的过程(显示转换)
%g*?1n/r R0             由于在C#2.0中引入了泛型的概念,取代了装箱和拆箱,所以这里就不再赘述了。
mp2cZe"b0             */51Testing软件测试网5S4hP ] LDq
   short i = 1;51Testing软件测试网M:Lj4m1HB`
   object ōbjectOne = i; //装箱,隐式类型转换51Testing软件测试网k:e%V5{d,xvA E'dW
   Console.WriteLine ("{0} Boxing to object:{1}",ObjectOne.GetType(),ObjectOne);
)qSr6ozd6M0a0   short j;    51Testing软件测试网/CI*M,f~m%_.MdJX
   j = (short)ObjectOne; //拆箱,显示类型转换51Testing软件测试网;az o%@/p
   Console.WriteLine ("object Unboxing to short :{0}",j);51Testing软件测试网NF(X \u)M#s\
   
uMeD.xE/dS y0   try      //错误的拆箱51Testing软件测试网wk4X_+S\EW
   {51Testing软件测试网"}GuMU [
    int k;
&in0PZ _0    k = (int)ObjectOne;51Testing软件测试网#t.VUMagTW
    Console.WriteLine ("object Unboxing to int: {0}",k);51Testing软件测试网p/AB5RA(C8e5?+?2a
   }
z8S~*{3\/G\0   catch(InvalidCastException ex){51Testing软件测试网 J EKV3IK!q
    Console.WriteLine ( ex.Message );
q6_Mr khi0   }

EH1l%m y051Testing软件测试网 G0{pU7{\

   object ōbjectTwo = new Class2 ();
CoakB"y&z+C!{v!UM0   try      //错误的拆箱
6]*\a4L-Ykd+pT#p D0   {
7q S ip$ZZ {oNT0    short m;
v&Ea Vo0    m = (short)ObjectTwo;51Testing软件测试网\`Yx!kN:N9^Qc
    Console.WriteLine ("object Unboxing to short :{0}",m);51Testing软件测试网`4eV N%Zw#C/R
   }
k5Q3p2By9E$c&~0   catch(InvalidCastException ex)
|O6TM~)A)K5D0   {51Testing软件测试网%~'[{u"f9~5}W
    Console.WriteLine ( ex.Message );
u*g F/v5X7UDDf(k)I0   }51Testing软件测试网 yP,b7d9sp-|

51Testing软件测试网5Io9H`3@-Ln B+v3o k

   Class2 aRef;   //Class2的一个引用变量51Testing软件测试网cm&Q9M7j e(Zt
   aRef = (Class2) ObjectTwo;51Testing软件测试网 K'B%_B$Z#qd
   Console.WriteLine (aRef.s );51Testing软件测试网B diP}az?
  }51Testing软件测试网yDd#L'p;}.jn
 }

m gP8m6W5x;_051Testing软件测试网 TW%s?4uZ ^5p

 class Class2
yJa6e.H*G0 {51Testing软件测试网p AA0i g1PC:wl+i
  public short s;
!?F \wj'e7`1d0  public Class2()
/p/m A%XH k(f| q0  {
9C/CA7_E0   Console.WriteLine ("A Class2 Object!");
{"@B:ETl:k J0   s = 10;
*t4a1|^F5W9G#u0  }51Testing软件测试网CI x a$| G?.z
 }
:z,~4S|-t+Lt0}51Testing软件测试网 L!XGF]"R!V

by2D.xn,E;H0

TAG: 编程学习

 

评分:0

我来说两句

wxf_xsfy

wxf_xsfy

自动化测试的拥簇者,善于自动化测试的框架和工具开发,TIB工作室核心成员

日历

« 2024-01-08  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 379588
  • 日志数: 79
  • 图片数: 1
  • 文件数: 1
  • 书签数: 3
  • 建立时间: 2007-09-19
  • 更新时间: 2018-01-30

RSS订阅

Open Toolbar