本文章为Roy原创

学习C#也有一段时间了,简单来总结一下C++与C#之间的区别,为更多的C++程序员转到C#阵营来,我整理了我自己的思绪,把我的一些心得体会写下来,以便大家可以更高效率地学习C#,高手见了勿见笑~

1,C#不支持多重继承,这是与C++明显区别的地方,说真的多重继承有时候用起来挺麻烦的,可能微软怕你用不好吧,不给你提供了,但我个人觉得没有了多重继承感觉有点可惜。

2.在标准的C#安全代码中不支持指针类型的操作,然而,你却能在微软所谓的“非安全代码”中操作指针类型对象。

3.C#中所有对象都只能通过关键词“new”来创建,C++的“类名_对象名”方式在C#中变为声明一个引用。呵呵,万物皆对象,连常见的数据类型都变为对象了,JAVA味道很浓。

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支持,效率是个问题,不利于做那些对运算速度和内存消耗要求高的项目。

转载于:https://www.cnblogs.com/raindust/archive/2007/08/16/857618.html

[导入] [转]总结C++与C#的区别相关推荐

  1. Vue 导入文件import、路径@和.的区别

    ***import: html文件中,通过script标签引入js文件. 而vue中,通过import xxx from xxx路径的方式导入文件,不光可以导入js文件. from前的: " ...

  2. gbase导入sql文件_Gbase配置

    喵了个咪的.到目前为止,自己已经用过SQL SERVER,My SQL,Oracle,SQLite,加上南大通用GBASE 五种数据库了.虽然每种都用的不深 注:GBASE提供了C的API,查看手册即 ...

  3. 软件测试,对于文件的上传下载,导入导出的操作的测试点

    上传下载 1.文件类型 1 .各种常见的文件类型,包括bat, xls, xlsx, doc, exe, jsp, rar, zip, iso等,以及各种视频.音频和图片等. 2.改文件名后缀,例如把 ...

  4. oracle分区表分区导出,Oracle分区表数据的导入与导出

    Oracle分区表的使用在一定程度上提高了对表数据的存储及处理性能,在查询性能和数据存储安全上体现了其特有的优势,因此很好的利用分区表,在一定程度上有利于数据库性能的优化.而Oracle分区表数据的导 ...

  5. python基础语法合集-Python基础语法合集.zip

    [实例简介]精心整理的Python基础语法合集,变量,循环,输入输出等等都有,主要是知道概念和怎么用的 如果打开文件后有文字变成符号的,先把字体改为宋体就正常了 [实例截图] [核心代码] 目录 了解 ...

  6. 【必看】CCNA初学者必看的一篇文章

    ​ 在决定学习Cisco课程后,大家遇到的第一个问题应该是到底要不要参加培训,因为毕竟CCNA的培训和认证费对于学生或者普通的工薪阶层来说,是一个不小的数目.从我的角度来说,如果你不是天赋极高,自制力 ...

  7. 最渣的 Spring Boot 文章

    spring-boot-starter-parent Maven的用户可以通过继承spring-boot-starter-parent项目来获得一些合理的默认配置.这个parent提供了以下特性: 默 ...

  8. python程序开发模块化_python-17-Python文件两种用途、模块化程序开发

    --------------------------------python文件的两种用途---------------------------------- py文件的两种用途: 1.直接运行 pr ...

  9. 用React开发SAP Fiori应用

    Jerry曾经写过两篇文章: SAP Fiori + Vue = ? - 2018年12月18日 Fiori Fundamentals和SAP UI5 Web Components - 2019年2月 ...

  10. 手机在线运行python_让Python程序在线执行

    Python Powered 引言 用python编程是我最幸福的时刻,相信有过python编程经验的童鞋都有体会.没有过多的束缚,没有过多的技巧,即使只用最平实的代码也依然能完成想要的功能.如果可以 ...

最新文章

  1. The restricted headers are:
  2. Java设计模式之创建型:单例模式
  3. oracle 11g禁用和强制direct path read
  4. Java中哪些可以作为GC Roots
  5. python seek_Python 文件操作seek()函数
  6. POJ2246 HDU1082 ZOJ1094 UVA442 Matrix Chain Multiplication题解
  7. pycharm 2018.1 专业版激活 亲测可用!!!
  8. 小知识 定位测绘领域中全站仪/接收机RTK精度1cm+1ppm的含义
  9. html基础、h5c3高级c3动画 、 JavaScript初高级、css预处理器和git 部分面试题
  10. 基于80C51单片机——中断小结
  11. Balancer均衡器时段设置
  12. 如何减少PDF文件的大小,为pdf瘦身?
  13. 休闲小趣一一3Dmax“简易教程”——2.1“案例过程”——制作电脑桌与书架
  14. Cisco ❀ MPLS中的路由器角色
  15. SpringBoot整合Mybatis(配置文件)
  16. 清分、清算、结算的关系
  17. 2021-2025年中国4K和8K超高清电视行业市场供需与战略研究报告
  18. 大型网站技术架构(六)--网站的伸缩性架构
  19. K-means均值聚类算法寻找质心,Python
  20. 全球25米分辨率PALSAR镶嵌式和森林/非森林地图(FNF)。数据集介绍及下载

热门文章

  1. 强大高可用的数据可视化神器plotly_express实践记录
  2. python 包的使用 (二)——tesseract识别图片中的文字
  3. 在linux中配置编译u-boot方法,U-Boot编译过程解析
  4. equal java用法_equal,和等号的用法..
  5. zotero mac 插入BibTeX条目 快捷键
  6. go项目新增一个代码文件
  7. 区块链 以太坊 虚拟机 EVM 详解
  8. 区块链 FISCO BCOS学习文章(2)-FISCO BCOS怎么搭建
  9. Kubernetes 小白学习笔记(17)--集群安全-APIServer的安全模型
  10. centos 6.5 安装mysql rpm_centos6.5 rpm 安装mysql5.6