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语言进行交互