WEB开发网
开发学院软件开发Java Why Java Sucks and C# Rocks(2):基础类型与面... 阅读

Why Java Sucks and C# Rocks(2):基础类型与面向对象

 2010-05-04 00:00:00 来源:WEB开发网   
核心提示: 直至Java 1.4,开发人员都必须编写这样的代码:ArrayListlist=newArrayList();list.add(Integer.valueOf(5));inti=((Integer)list.get(0)).intValue();inthash=Integer.valueOf(3

直至Java 1.4,开发人员都必须编写这样的代码:

ArrayList list = new ArrayList(); 
list.add(Integer.valueOf(5)); 
int i = ((Integer)list.get(0)).intValue(); 
 
int hash = Integer.valueOf(3).hashCode();

在Java类库中也为每个基础类型分别指定了封装类(wrapper class),当遇到一些需要和Object进行互操作的时候,便可以把基础类型包装为一个对象。这些对象继承于Object类型,自然能够被添加到 ArrayList中,也拥有hashCode等定义在基类中的方法。只是,在获取到Object对象并转换成封装对象时,还需要调用对象上的某个方法(如上面的intValue方法)才能重新获取到基础类型。

C#中的值类型

在此期间微软发布了.NET平台和C#语言。在C#语言中并没有所谓的“基础类型”,或者说C#的“基础类型”是作为.NET中的struct类型统一对待的。在.NET框架中定义了一系列struct类型,如Int32,Boolean,Double等等,在C#语言中使用关键字 int,bool,double与之对应,这便有了一些“基础类型”的意味。自然,在C#代码中我们也可以直接使用那些类型的名称,完全等价。

开发人员可以在程序中定义自己的struct类型,并包含构造函数,方法或是属性等等,并统一继承于ValueType类型(值类型),而 ValueType也是统一基类Object的子类。因此,在C#中那些“基础类型”也拥有Object类及自己的成员,并可以直接应用在需要 Object的地方(即隐式转换)。因此,在C#中我们可以直接编写这样的代码:

ArrayList list = new ArrayList(); 
list.Add(5); 
int i = (int)list[0]; 
 
int hash = 3.GetHashCode();

上一页  1 2 3 4 5 6  下一页

Tags:Why Java Sucks

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接