6、函数参数类型为对象时:
C++:当参数类型为对象时,函数在传参时进行对象的复制,在函数体里改变数组里的值,函数外面不会跟着改变;
C# :当参数类型为对象时,函数默认当成引用类型来处理,在函数体里改变数组里的值,函数外面也跟着改变;
7、局部变量和全局变量的名称可不可以相同;
C++中是可以相同的,且局部变量会覆盖全局变量的值;C#中全局变量和局部变量的名称不可以相同;
8、C++中当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动对其初始化;而在C#中无论是局部变量还是全局变量系统都会对其初始化;
9、关于路径的写法:
C#:绝对路径:D:\\GisMap\\text2.txt;相对路径:GisMap\\text2.txt,表示exe同级目录下的Gismap目录下的text2.txt文件;..\\GisMap\\text2.txt表示exe所在目录下上一级目录下的Gismap目录下的text2.txt;
C++:绝对路径:D:\\GisMap\\text2.txt;相对路径:.\GisMap\\text2.txt,表示VC源码同级目录下的Gismap目录下的text2.txt文件;..\\GisMap\\text2.txt表示VC源码所在目录下上一级目录下的Gismap目录下的text2.txt;
10,C#不支持多重继承,这是与C++明显区别的地方,说真的多重继承有时候用起来挺麻烦的,可能微软怕你用不好吧,不给你提供了,但我个人觉得没有了多重继承感觉有点可惜。
12.在标准的C#安全代码中不支持指针类型的操作,然而,你却能在微软所谓的“非安全代码”中操作指针类型对象。
13.C#中所有对象都只能通过关键词“new”来创建,C++的“类名_对象名”方式在C#中变为声明一个引用。呵呵,万物皆对象,连常见的数据类型都变为对象了,JAVA味道很浓。
14.数组变为了类,因此对于数组里的元素,.NET Framework直接提供了一系列的操作:查找、排序、倒置……
15.在C#里面,数组的元素都是存放在托管堆里面,比起C++的在内存里不确定位置申请一块连续空间要安全得多。
16,C++的switch后跟参数必须是int型,而C#却允许string型,这点改进觉得真的是比以前方便多了!
17.C#会禁止所有switch..case语句的失败情形,除非case语句后是空格,否则执行了前一个case语句就算没有break也会停止执行后面的case语句。
18.在异常处理上,C++允许抛出任何类型,而C#中规定抛出类型为一个派生于System.Exception的对象。
19.C++的宏在C#中被抛弃了很多,而且也不建议使用,因此很少见。
20.C++的模板在C#里没有了,但在C#中我们找到了能完成模板任务的更锋利的武器:委托。
21.C++的全局变量这一概念没有了,C#和JAVA类似,要把所有东西都放在类里面,还建议使用命名空间包含起来。
22.C#可以在定义类的时候直接给属性赋值,而C++这么做却会编译出错。
23.C#里有静态构造函数一个概念,这个构造函数只执行一次,因此能够保证一些静态成员只被初始化一遍。
24.C#有自动垃圾收集机制,防止内存泄露,把C++程序员从繁重的内存管理上解放出来。
25.更强的类型转换保护机制,比如说把float转成uint,直接转换0.35会变成0.34,是因为二进制无法表示这样的数字,使用System.Conver里的方法,可以安全地把类型安全转换过来。