当我遇见微软的程序语言设计师Anders Hejlsberg的时候, 他将C#(C sharp)描述成" C/C++ 家族中第一个真正的面向组件的语言."程序组件中数据(属性)和行为(事件)的编程模型在C#中得到了比Java更自然的支持,他说."[Java]用访问方法的命名转换模拟对象属性而用适配器和管道模拟事件处理,"Hejlsberg说.他承认 Java和C++都支持面向组件的编程风格,但是他也指出了这些语言中的区别,"组件并不是第一位的"--他的意思是在C#中,诸如改变一个图形按纽控件的标题之类的操作将使用更少的代码和更简单的语法,因为按纽已经成为了一个负责管理自己的外观和用户感觉的组件了.面向组件,Hejlsberg表示,能够让开发者在任何用户希望访问Web 服务的地方嵌入自己的软件.下面是C++, Java和C#各自特点的比较.--Peter Coffee
| |
C++ |
Java |
C# |
| 系统资源管理 |
手动 |
内存分配和释放 |
自动的无用内存回收 |
| 程序员生产效率 |
很少有高层次的机制 |
拥有良好的数据集合和控制流语句 |
更多的预定义数据类型,在对程序流进行控制时使用它们具有更大的灵活性 |
| 软件可靠性 |
有限的类型安全功能 |
复杂而且通常被忽视的错误处理机制
强制数据类型避免操作的不可预料的混淆 |
异常处理以一种结构良好的方式捕捉异常 |
| 软件性能 |
自由使用的指针使得许多程序操作变得流畅但也带来了多种程序员造成的错误 |
有限的对象机制减少了程序运行时的额外消耗 没有指针 |
在对象和原始类型之间常常存在烦琐的转换过程
在标记为"不安全(unsafe)" 的代码段中可以使用指针; 通过"装箱"可以在对象和值之间进行高效的转换. |
| 应用程序的可移植性 |
编译成机器代码 |
编译成广泛支持的"字节码"并能在任何装有Java虚拟机的平台上运行 |
编译成.NET中间代码 |
用户评论