C#与C/C++的不同

类型推断

使用关键字var。编译器可以根据变量的初始化值“推断”变量的类型。例如:

int someNumber = 0;

就变成:

var someNumber = 0;

即使someNunber从来没有声明为int, 编译器也可以确定, 只要someNunber在其作用域内,就是一个int。编译后,上面两个语句是等价的。

局部变量的作用域冲突

同名的局部变量不能在同一作用域内声明两次。(这跟C/C++很不一样,也就不存在“局部覆盖”的问题了)。

值类型和引用类型的存储位置

值类型存储在堆栈中,而引用类型存储在托管堆上。

C#所有的数据类型与平台无关。

decimal类型,128位高精度十进制数表示法,不是基本类型,所以使用该类型会有性能损失。

C#支持两种预定义的引用类型,object和string。object,根类型,CTS中的其它类型都是从它派生而来的(包括值类型)。string,Unicode字符串。

可以在字符串字面量的前面加上字符@, 在这个字符后的所有字符都看作是原来的含义---它们不会解释为转义字符:

string filepath = @"C:\ProCSharp\First.cs";

甚至允许在字符串字面量中包含换行符。

在C#中,if语句的表达式必须等于布尔值。不能直接测试整数(如从函数中返回的值),而必须明确地把返回的整数转换为布尔值true或false。

C#中,switch语句的每一个case语句必须加break,否则报错!但有一种例外情况。如果一条case子句为空,就可以从这个case跳到下一条case上,这样就可以用相同的方式处理两条或多条case子句了。

另一个与C++中的switch语句不同的地方:在c#中可以把字符串用作测试的变量。

因为using语句在C#文件的开头,而C和C++也把#include语句放在这里,所以从C++迁移到C#的程序员 常把名称空间与C++风格的头文件相混淆。不要犯这种错误,using语句在这些文件之间并没有建立物理链接。C#也没有对应于C++头文件的部分。

结构与类的区别是它们在内存中的存储方式、访问方式(类是存储在堆heap上的引用类型,而结构是存储在栈stack上的值类型)和它们的一些特征(如结构不支持继承)。

较小的数据类型使用结构可提高性能。

通过值传送变量是默认的,也可以迫使值参数通过引用传送给方法。为此,要使用ref关键字。如果把一个参数传递给方法,且这个方法的输入参数前带有ref关键字,则该方法对变量所做的任何改变都会影响原始对象的值。在调用该方法时,还需要添加ref关键字。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值