C# 与C++的区别小结
来源:互联网 发布:tmt行业知乎 编辑:程序博客网 时间:2024/06/17 20:31
1、C#不支持多重继承。
使用多重继承可以使派生出来的类具有多重特性,使用紧凑的代码完成十分复杂的功能,但这样不可避免的是代码的调试和阅读变得困难和烦杂。但是C#中支持接口Interface的多重继承,在类中实现Interface中的接口函数就可以了。
2、在标准的C#中,不支持指针类型。
C#在默认情况下都是安全代码,即进行了代码托管,由编译器负责垃圾回收,释放内存,而指针不能出现在安全代码的条件下。如果要使用指针,可以将代码定义为非安全的(unsafe)、或者可以考虑Inptr这个类型。
3、C#中所有的对象都只能通过new来创建分配内存。
在C#中,使用new来调用构造函数,new的作用对象可以是引用类型,也可以是值类型。例如,在C#中可用如下代码声明一个整型变量并分配存储空间:
int a = new int();a = 10;MessageBox.Show(a.ToString());
而在C++中,下面的写法将提示:int*类型的值不能初始化int类型的实体:
int a = new int();4、C#中数组变成了类,对于数组里的元素,.Net提供了一系列的操作。
.Net为C#中的数组提供了许多方法和属性。如:获取数组的长度、数组的拷贝、得到数组的平均值等。如下代码将数组的长度赋值给一个变量:
int[] array = new int[20];int a = new int();a = array.Length;5、C#中,数组存储在托管堆里。
在C#中,将数组存放在托管堆里,这样,程序员不必去关心何时释放数组所占用的内存,由.Net来负责对内存的释放与垃圾回收。
6、C++中,Switch后的参数表达式必须是整数或者枚举类型,也可以是char型的字符常量。而在C#中,switch后的参数表达式可以是string类型,这样就扩大了Switch可使用的范围。
在C++中,下边的写法将提示:表达式必须包含整数或者枚举类型,
string a = "sh";//char a = 'b';switch (a){case 'a':break;case 'b':cout << "welcome" << endl;break;default:break;}而在C#中,这样的写法是可以正确编译执行的:
<span style="white-space:pre"></span>string a = "w"; //char a = 'b'; switch (a) { case "s": break; case "w": MessageBox.Show("welcome"); break; default: break; }7、C++中的宏定义在C#中被弃用。
C#中已经不再使用宏定义。而关于C#中替换C++中宏定义的相应方法在本人前边的文章 C++宏的作用与C#里宏的代替 中已经有所提及。
8、C# 中新增委托、事件,装箱与取消装箱。
委托,事件是C#中新引入的概念,与MFC中的消息响应机制类似。
9、C#中不再存在全局变量。
如果,在命名空间的作用域中,类的作用域之前定义一个整型变量,将提示:命名空间不能直接包含字段或方法之类的成员。如下图所示:
10、C#提供自动垃圾回收机制。
托管代码:被CLR(Common Language Runtime)管理的代码。
回收机制:分配在栈空间的变量,一旦执行完,或者超出其作用域,就会被CLR回收;分配在堆里的对象,当没有其他任何对象引用他时,就被标记为垃圾对象,等待垃圾回收器回收。
- C# 与C++的区别小结
- C与C#的区别
- C与C#的区别
- C, C++,C#的区别与联系
- C#中Ilist与list的区别小结
- C#中Ilist与list的区别小结
- C#中Ilist与list的区别小结
- C#与C++、JAVA的区别
- OC---初识 OC与C的区别 小结
- c、c++、c# 结构体与类的区别
- c# 与c/c++/java的区别(待续)
- python与C, C++,C#一个计算精度的区别
- c语言与 c#与c++的区别
- C#与C/C++的区别的地方
- C++、C#中 abstract 与 virtual关键字的区别联系
- object-c 与 java,c#等语言的 语法区别
- C++、C#中 abstract 与 virtual关键字的区别联系
- 【C#】C#中List与IList的区别
- Linux Command To Find the System Configuration And Hardware Information
- 2015年终总结—愿得菩提,心似琉璃
- 自学QT之QApplication类和<qapplication.h>头文件
- JS-案例-Checkbox全选
- Python的builtins模块
- C# 与C++的区别小结
- Regionals 2014 >> North America - Greater NY >> 7097 - Growing Rectangular Spiral
- ICPC 6823 Counting substhreengs
- PHP开发app接口(1)
- java中的线程同步问题解决方案
- 动物园查找最短路径题
- Regionals 2014 >> North America - Greater NY >> 7094 - Happy Happy Prime Prime
- Eclipse Debug的一些用法
- 数据结构之树状数组