总体了解C#(9 类型一致)
A Comparative Overview of C#中文版
作者:Ben Albahari
公司:Genamics
日期:2000年7月31日初版,2000年8月10日修订。
感谢以下人士支持和反馈(按字母先后顺序):Don Box、 C.R. Manning、 Joe Nalewabau、 John Osborn、 Thomas Rhode & Daryl Richter。
译者:荣耀
9.类型一致
大多数语言都有基本类型(int、long等等)。高级类型最终是由基本类型构成的。能以同样的方式处理基本类型和高级类型通常来说是有用处的。例如,如果集合可以象包容sting那样包容int是有用的。为此,Smalltalk通过牺牲些许效率象处理string或Form一样来处理int和long。Java试图避免这个效率损失,它象C和C++那样处理基本类型,但又为每一个基本类型提供了相应的包装类—int包装为Integer,double包装为Double。C++模板参数可接受任何类型,只要该类型提供了模板定义的操作的实现。
【译注:在Java中,你可以这么写:
int i = 1;
double d = 1.1;
Integer iObj = new Integer(1);
Double dObj = new Double(1.1);
以下写法是错误的:
int I = new int(1);
Integer iObj = 1;
】
C#对该问题提供了一个不同的解决方案。在上一节里,我介绍了C#中的结构,指出基本类型不过是结构的一个别名而已。既然结构拥有所有对象类型拥有的方法,那代码就可以这么写:
int i = 5;
System.Console.WriteLine (i.ToString());
如果我们想象使用一个对象那样使用一个结构,C#将为你装箱该结构为对象,当你再次需要使用结构时,可以通过拆箱实现:
Stack stack = new Stack ();
stack.Push (i); // 装箱
int j = (int) stack.Pop(); //拆箱
[下一页]
相关文章:
浅析C#中的套接字编程
Visual C#.Net网络程序开发-Tcp篇(2)
总体了解C#(目录)
总体了解C#(1 C#和Java)
总体了解C#(2 属性)
用设计模式固化你的C#程序(目录)
总体了解C#(3 索引器)
Visual C#.Net网络程序开发-Tcp篇(3)
总体了解C#(4 委托)
总体了解C#(5 事件)
|