总结一下C++与C#之间的区别
1,C#不支持多重继承
2.在标准的C#安全代码中不支持指针类型的操作,然而,你却能在微软所谓的“非安全代码”中操作指针类型对象。
3.C#中所有对象都只能通过关键词“new”来创建,C++的“类名_对象名”方式在C#中变为声明一个引用。万物皆对象,连常见的数据类型都变为对象了。
4.数组变为了类,因此对于数组里的元素,.NET Framework直接提供了一系列的操作:查找、排序、倒置……
5.在C#里面,数组的元素都是存放在托管堆里面,比起C++的在内存里不确定位置申请一块连续空间要安全得多。
6,C++的switch后跟参数必须是int型,而C#却允许string型,这点改进觉得真的是比以前方便多了!
7.C#会禁止所有switch..case语句的失败情形,除非case语句后是空格,否则执行了前一个case语句就算没有break也会停止执行后面的case语句。
8.在异常处理上,C++允许抛出任何类型,而C#中规定抛出类型为一个派生于System.Exception的对象。
9.C++的宏在C#中被抛弃了很多,而且也不建议使用,因此很少见。
10.C++的模板在C#里没有了,但在C#中我们找到了能完成模板任务的更锋利的武器:委托。
11.C++的全局变量这一概念没有了,C#和JAVA类似,要把所有东西都放在类里面,还建议使用命名空间包含起来。
12.C#可以在定义类的时候直接给属性赋值,而C++这么做却会编译出错。
13.C#里有静态构造函数一个概念,这个构造函数只执行一次,因此能够保证一些静态成员只被初始化一遍。
14.C#有自动垃圾收集机制,防止内存泄露,把C++程序员从繁重的内存管理上解放出来。
15.更强的类型转换保护机制,比如说把float转成uint,直接转换0.35会变成0.34,是因为二进制无法表示这样的数字,使用System.Conver里的方法,可以安全地把类型安全转换过来。
16.委托与事件、装箱与取消装箱、Web Services……一大堆C++没有的新东西,我感觉是做大型项目方便了管理,也容易扩充,但做起小型项目,由于是编译成IL代码的,运行需要.NET Framework SDK支持,效率是个问题,不利于做那些对运算速度和内存消耗要求高的项目。
开发项目来说,C#适合企业各应用程序,C++适合底层开发(游戏等)
转自:https://blog.csdn.net/u012154840/article/details/78261001
最新文章
- C#设计模式之建造者模式
- Dijksktra(测试源代码)
- sshpass批量执行操作
- C++类的交叉引用
- 从零开始--系统深入学习IOS(使用Swift---带链接)
- 破解Demo
- saltstack实战4--综合练习3
- jQuery Easyui DataGrid应用
- Grails教程之--我的理解
- 深度探索va_start、va_arg、va_end
- Windows下C语言的Socket编程例子(TCP和UDP)
- MVC+EF 入门教程(四)
- 【RMQ】洛谷P3379 RMQ求LCA
- maven+springMVC(二)
- tar解压指定文件
- [angularjs] angularjs系列笔记(七)HTML DOM
- monit官方摘录
- python调用mediainfo工具批量提取视频信息
- TlistView基本使用
- MySQL并发复制系列一:binlog组提交 (转载)
热门文章
- 对象转型、迭代器Iterator、Set集合、装箱与拆箱、基本数据类型与字符串的转换、TreeSet集合与对象
- Go -- this user requires mysql native password authentication 错误
- Docker学习知识图
- group by 分组去重查询
- OpenJudge计算概论-求字母的个数(统计元音字母个数)
- 对请求数据的格式化 方案 Spring Cloud Gateway features:
- Tosca Connection Validation error:40 - Could not open a connection to SQL Server (不知道怎么解决)
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器
- 123467123456#1#-----com.twoapp.DaDiShuGame01--前拼后广--现实打地鼠游戏jiemei
- iOS 将一个UIImage缩放到指定Size