第二章 C#基础
1、C#命令行编辑器csc.exe
csc First.cs
2、与Java与C++不同,C#的Main函数是大写的。
3、C#的变量在引用前必须初始化,否则当作错误来看待。
4、C#有15个预定义类型,其中13个是值类型,2个是引用类型(string和object)。
5、decimal不是基本类型,所以在计算时使用该类型会有性能损失。
6、如果变量声明为bool类型,就可能使用true或false,如果使用0表示false,使用1表示true就会出错。
7、C++的char表示一个8位字符,而C#的char包含16位。
8、所有的类型都隐含地最终派生于System.Object类。
9、string与引用类型在常见的操作上有一些区别。例如,修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串没有改变。
10、switch语句的case子句的排放顺序是无关紧要的,甚至可以把default子句放在最前面。case的值必须是常量表达式。
11、命名空间支持嵌套,但不允许在另一个嵌套的命名空间中声明多部分的命名空间。
12、命名空间与程序集无关。同一个程序集中可以有不同的命名空间,也可以在不同的程序集中定义同一个命名空间的类型。
13、命名空间可以起别名,语法如下:
using alias = NamespaceName;
命名空间的修饰符是::,即alias::ClassName。
14、给Main()方法指定什么访问级别并不重要,即使把该方法标记为private,它也可以运行。
15、如果存在多个Main方法,编译器就会返回一个错误,但可以使用/main选项,其后跟Main方法所属类的全名(包括命名空间),明确告诉编译器把哪个方法作为程序的入口点:
csc MainExample.cs /main:Wrox.ProCSharp.Basic.MathExample
16、枚举类型都是值类型。System.Enum是一个抽象类(abstract class),所有枚举类型都直接继承自它,当然也同时继承了它的所有成员。所有的值类型都是System.ValueType的后代,枚举类型也不例外,枚举类型直接继承自System.Enum,而System.Enum却又直接继承自System.ValueType的,所以,枚举类型也是System.ValueType的后代。
值类型都是System.ValueType的后代”,但System.ValueType的后代不全是值类型,System.Enum就是唯一的特例!在System.ValueType的所有后代中,除了System.Enum之外其它都是值类型。