C#相对于C++、Java全新在哪里
2008-02-17 15:38
239 查看
做为脱胎于C++的一直语言,C#和Java一样对C++进行了改进,其中最激动人心之处莫过于垃圾自动回收了。做为一个编程的常识,用户都知道当某一个变量不再引用时,应该清理它占用的内存。在C++中对于一个局部变量或者系统分配的变量,系统会自动收回它占用的内存,例如,基于堆分配的变量。但是系统不会自行释放用户自己分配的内存,由于用户忘记释放内存造成的内存泄露,在一定程序上会给程序的稳定性造成隐患。C#能够自动回收用户分配内存,用户可以大胆分配内存,而不用关心它的释放,而且C#实现了类型安全,确保应用程序的稳定性。当然类型安全也使代码的可读性大大增强,更有利于团队的开发。
C#比C++有更丰富的错误处理模型,在程序编写的过程中可能会遇到大量的未检查的HRESULTs,也就是说程序中有大量的函数运行后返回一个结果值,但是程序并没有对运行的结果惊醒有效的检查处理,这样任何一个调用的失败,都会造成一连串的连锁反应,程序会弹出一个丑陋的错误对话框,以示错误。为了改进这一状况,C#提供了对包括throw、try。。。Catch、try。。。finally关键词的内在支持。在C++中,也有类似的关键词,不过它们都是通过宏来实现的。
C#提供了更见现代的调试方法,在以往的C++程序中,用户往往经常需要使用#ifdef和#endif关键字。这样一部分代码只能运行在调试阶段。用户最终可以生成调试版本和发行版本。发行版本的一些函数调用将执行一些空操作。C#提供的条件关键字可以根据定义的标记决定程序的流向。
C#比C++有更丰富的错误处理模型,在程序编写的过程中可能会遇到大量的未检查的HRESULTs,也就是说程序中有大量的函数运行后返回一个结果值,但是程序并没有对运行的结果惊醒有效的检查处理,这样任何一个调用的失败,都会造成一连串的连锁反应,程序会弹出一个丑陋的错误对话框,以示错误。为了改进这一状况,C#提供了对包括throw、try。。。Catch、try。。。finally关键词的内在支持。在C++中,也有类似的关键词,不过它们都是通过宏来实现的。
C#提供了更见现代的调试方法,在以往的C++程序中,用户往往经常需要使用#ifdef和#endif关键字。这样一部分代码只能运行在调试阶段。用户最终可以生成调试版本和发行版本。发行版本的一些函数调用将执行一些空操作。C#提供的条件关键字可以根据定义的标记决定程序的流向。
相关文章推荐
- 一道面试题:C++相比C#或者java的优势到底在哪里
- 编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS!--隆重推荐转
- 我们应该学习什么语言,java、C#还是c++?
- 浅谈C++/JAVA/C#运行机制和执行效率
- C++、C#、JAVA中模板与泛型
- 小叮咚 中文分词 发布 java 版本 , c# 版本 , c++ 版本
- C#/Java/C/C++基本类型所占大小及表示范围
- C++、Java和C#中的异常处理
- Android Java调用.so和.a、Unity C#调用jar插件和C++开发的插件
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- C#调用Java C++方法
- C# 与 C 、 C++ 、 D 、 Java 的性能比较(三)
- 不单单用java开发android,可以是C/C++ 或c#
- Java/C#/C/C++基本数据类型一览
- C/C++、JAVA、C#之间的关系和区别?
- C、C++、C#、Java的区别和联系
- C++、Java和C#中的异常处理
- Java通过C++调用 C# DLL
- 再谈C# ,C++和java 以及C
- Java、C#、C++定义数组区别