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