第二章 c#基础


1、语句可以写在多行上 ,无需用类似vb的续行符号_

2、c#编译器把没有初始化变量标识为错误,这样可以防止我们无意获取从其他程序留下的内存中的垃圾值,大多数编译器标识为警告

3、变量如果是类或者结构中的字段,可以默认赋值,如果是局部变量,必须在代码中显式赋值,否则错误

4、microsoft c++编译器早期的版本在for,while类似的语句中声明的局部变量,在循环停止后还存在

5、c++允许局部变量隐藏作用域比它广的变量,c#隐藏实现的唯一方式,类型级的变量可以被拘捕变量隐藏掉

6、常量必须在声明时候初始化,指定其值后,就不能再修改了,常量值必须在编译时候就定好的,比如不能用一个变量给常量赋值

7、给引用赋值空,c#= null,c++=NULL vb=Nothing

8、c#有15个预定义类型,其中13个是值类型,2个是引用类型(string 和object)

9、c#byte在默认状态是无符号,有符号的sbyte,c#编译器认为char和byte不同,2者转化需要通过显式转化

10、如果对于一个整数是int、uint、long、ulong没有显示说明 则该变量默认为int, uint ui=123U;long l=123L;ulong ul=123UL,最好

不用l,ul 因为l会跟整数1混淆。

11、如果对每个非整数数值没有+f后缀 就默认为double类型的  decimal后缀+m,decimal不是基本类型,用它来计算会有一些性能损失

12、c#的char跟c++不一样,它包含16位,部分原因不让char和byte转化

13、switch 时候,编译器会把没有break的语句标志为错误,这样的时候就正确,任何两个case都不能相同,两个值相同不同常量,也不行
    case 0:
    case 1:
      break; c#的switch可以把字符串当测试变量(foreach IEnumerable) foreach不能改变集合中的对象的值

14、对于goto语句用法限制 不能跳转到for循环之中,也不能跳出类的范围,不能退出try...catch后面的finally

15、实际上,把代码编译好,枚举就成为基本类型,使用枚举不会有性能损失

16、命名空间 不允许在嵌套的命名空间中声明多部分的命名空间,类实例有一个方法GetNameSpace获取类命名空间

17、Main方法必须是类或结构的静态方法,并且其返回类型必须是int或void

18、csc目标 \t:exe  \t:library  \t:module  \t:winexe 默认是exe 控制台程序

19、格式字符串 C D E G N P X F 格式字符串一般不需要考虑大小是,除了e/E  {0,9:C2}  -9则左对齐,9右对齐 占位符#{0,#.00}

20、预处理器命令#warning,编译器遇到这个就显示#warning后文本,编译成功,如果遇到#error,就编译失败,不能编译成IL