专注于自动化测试,性能测试.......
C#的装箱和拆箱
上一篇 /
下一篇 2008-03-07 10:21:36
/ 个人分类:C# Programming
7?F0|~,U%a%x0C#的装箱和拆箱51Testing软件测试网-M/ej!_HJ
g1O;go;B9Ih0using System;51Testing软件测试网y1yw1^)Fbvz
A4j
$bg8p:RKz;g+]n0namespace testBoxingApp
8p(eE0ka'`&~0{51Testing软件测试网(]#s5F-Jq#N
/// <summary>
oSs 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:itXh
/// 应用程序的主入口点。
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;pz E h0 //51Testing软件测试网)ODnS%?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/rR0 由于在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\
u MeD.xE/dS
y0 try //错误的拆箱51Testing软件测试网wk4X_+S\EW
{51Testing软件测试网"}GuM U[
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软件测试网
JEKV3IK!q
Console.WriteLine ( ex.Message );
q6_Mr
khi0 }
EH1l%my051Testing软件测试网 G0{pU7{\ object ōbjectTwo = new Class2 ();
CoakB"y&z+C!{v!UM0 try //错误的拆箱
6]*\a4L-Ykd+pT#pD0 {
7qS ip$ZZ {oNT0 short m;
v&EaVo0 m = (short)ObjectTwo;51Testing软件测试网\`Yx!kN:N9^Qc
Console.WriteLine ("object Unboxing to short :{0}",m);51Testing软件测试网`4eVN%Zw#C/R
}
k5Q3p2By9E$c&~0 catch(InvalidCastException ex)
|O6TM~)A)K5D0 {51Testing软件测试网%~'[{u"f9~5}W
Console.WriteLine ( ex.Message );
u*gF/v5X7UDD f(k)I0 }51Testing软件测试网 yP,b7d9sp-|
51Testing软件测试网5Io9H`3@-L nB+v3o k Class2 aRef; //Class2的一个引用变量51Testing软件测试网cm&Q9M7je(Zt
aRef = (Class2) ObjectTwo;51Testing软件测试网
K'B%_B$Z#qd
Console.WriteLine (aRef.s );51Testing软件测试网BdiP}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/mA%XH
k(f|q0 {
9C/CA7_E0 Console.WriteLine ("A Class2 Object!");
{"@B:ETl:kJ0 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:
编程学习