C#与C++、Java的比较
:2010-09-05 08:46:00
功能 | C++ | Java | C# |
跨平台 | 源代码(部分) | 字节码 | CLI(不流行) |
执行方式 | 编译 | 编译+解释 | 编译+JIT转换 |
中间代码 | 无 | 字节码Bytecode | 中间语言MSIL |
运行环境 | 操作系统 | JRE/JVM | CLR/VES |
内存管理 | 直接分配和删除 | 垃圾内存自动回收 | 垃圾内存自动回收 |
多重类继承 | 支持 | 不支持 | 不支持 |
操作符重载 | 支持 | 不支持 | 部分支持 |
对象访问 | 地址/指针 | 引用 | 引用 |
接口类型 | 无 | 有 | 有 |
属性成员 | 无 | 无 | 有 |
成员可用性 | 不支持 | 使用反射 | 使用反射 |
命名空间 | 支持 | 包机制 | 支持 |
指针 | 支持 | 不支持 | 部分支持(非安全代码) |
函数指针 | 支持 | 适配器+监听程序 | 委托 |
全局函数与变量 | 有 | 无 | 无 |
无符号整数类型 | 有 | 无 | 有 |
大十进制数类型 | 无 | 有(库) | 有(语言) |
强制类型转换 | 支持 | 不支持 | 支持 |
越界自动检查 | 无 | 有 | 有 |
多维数组 | 数组的数组 | 数组的数组 | 真正多维数组 |
索引 | 支持 | 不支持 | 支持 |
泛型 | 编译时模板 | 运行时泛型(有限制) | 编译时模板 |
泛型类型编译 | 具体化 | 类型擦除 | 具体化 |
线程同步 | 调用函数 | 语言内部 | 语言内部 |
异常处理 | 可选 | 支持检查异常 | 只支持非检查异常 |
标准类库 | 贫乏 | 丰富 | 庞大 |
适用领域 | 面向对象的 系统和界面编程 | 跨平台(服务器端) 网络编程 | Windows平台的 .NET和组件编程 |
!
C#与C++、Java的比较