C#与JAVA之比较(图表说明)
笔者:乘风笑傲
笔者曾经使用过C#和JAVA,种种过程有感于心,故作之,以抛砖引玉。
|
C# |
JAVA |
目标 |
提供易用、面向对象、跨平台 |
提供易用、面向对象、跨平台 |
GC |
有 |
有 |
丰富的类库 |
有 |
有 |
中间语言 |
IL |
JVM |
自动生成文档 |
有(/out生成XML文档) |
有(javadoc生成HTML文档) |
值类型 |
都是对象派生的 |
基本类型是专门的 |
跨平台 |
公共语言运行时 |
虚拟机 |
操作符重载 |
可 |
否 |
结构类型 |
可 |
否 |
委托和事件 |
内置的委托和事件 |
接口和内部类定义 |
传递参数 |
值、引用传递 |
只能值传递 |
属性 |
支持 |
不支持 |
枚举 |
可 |
否 |
不安全模式 |
可 |
JNI可达到同样效果 |
分度器 |
有 |
无 |
抛出异常 |
有 |
有 |
数组 |
规则、不规则均可 |
不规则 |
接口 |
支持 |
支持 |
Switch |
可用表达式 |
只能整数 |
Foreach |
有 |
只能用for或while |
前记
笔者曾是JAVA的忠实拥护者,何故?就是因为它可以跨平台,虽然这样说其实有些不然,但是那些基于JAVA的开发平台都是些倒霉的东西,这就不能不让人承认微软的东西就是好用,光是整洁的代码界面就让我感觉很好。
故穷则变,此文多有为C#摇旗呐喊之意。
一点说明:跨平台性
JAVA的跨平台性得益于它的JVM,即通过此完成JAVA代码到多平台机器语言的转变,但这个前提是转变前的代码必须用JAVA编写。
.NET提供CLS(common language specification),允许第三方编写编译器,在明确定义的规则下于.NET语言进行交互
本文地址:http://com.8s8s.com/it/it45728.htm