1、编译区别
C#代码首先会被编译为CLR(公共语言运行库),然后由.NET框架解析。(与Java类似)
C ++代码将会直接被编译为机器代码。
2、内存管理的不同
C#是在虚拟机上执行,会自动进行内存管理。而,C ++需要手动组织管理内存。
C#中实现自动垃圾回收,通过new在堆中创建对象,当对该对象的引用计数为0时回收内存。类有构造函数而没有析够函数。
3、指针使用的区别
C#不支持使用指针,但可以使用一些不安全的类和方法;而,C ++允许使用指针。
C++中的指针在带来强大的灵活性和高效的同时,也带了不少使用上的难题,C++程序中的绝大多数问题都来源于指针的不正确使用,C#出于软件安全性的考虑和语言易用性的考虑没有指针,只有引用和数值之分。int等内部数据类型和struct定义的类型是数据类型,拷贝时做深度拷贝;而string和用class定义的类型是引用类型,拷贝时做浅拷贝——与深度拷贝对应,它通过引用计数来实现对象和内存管理。
C++中用指针能够轻易实现的功能,C#需要引进许多额外的机制。比如C++的函数指针,在C#中称之为delegate。C#中的参数传递,分为传值和传址两种,传址时需要加ref或者out(传回改变)关键字。
C#和C++都是面向对象的。
C#属于.NET平台,更加专注于企业级应用的开发,主要用于上层应用软件和WEB开发。C++功能十分强大,但是和C#不同,更加偏向与底层软件开发,同时C++也是很多电脑游戏的开发工具,确实功能十分强大。但不适用于WEB开发。
C#是微软开发的一种面向对象的编程语言,C+是一种通用的、面向对象的编程语言。
C#是微软公司开发的,而C+是一种通用语言。
C#是一种面向对象的语言,而C+是结构型编程语言。
C#支持面向对象的完整特性,如封装、继承、多态等,而C+不支持多态。
C#支持函数重载,而C+不支持函数重载。
C#有一个强大的类库,而C+没有类库。
C#支持垃圾回收,而C+不支持垃圾回收。