一、核心C#
1.声明变量
2.变量的预定义数据类型
3.C#的预定义数据类性
4.在C#程序中使用条件语句、循环和跳转语句执行的执行流
5.枚举
6.名称空间
7.Main()方法
8.基本的命令行C#编译器选项
9.使用System.Console执行控制台I/O
10.预处理器的指令
11.C#编程的推荐规则和约定
1.标准的System名称控件包含了最常用的.Net类型。在C#中作的所有工作都依赖于.Net基类:C#没有用于输入和输出的内置关键字,而是完全依赖于.Net类。
2.关于方法:
[modifiers] return_type MethodName([parameters]) { //Method body. NB. This code block is pseudo-code. }
第一个方括号中的内容表示可选关键字。修饰符(modifiers)用于指定用户所定义的方法的某些特性,如可以在什么地方调用该方法。
public:可以在类的外部调用它。
static:不能在类的实例上执行,因此不必先实例化类在调用。
Console.WriteLine(“xxxxxxx”);
Console.ReadLine();
Return;
WriteLine()是一个静态的方法,在调用之前不需要实例化Console的对象。
变量的初始化:
变量的初始化是C#强调安全性的另一个例子。简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量。大多数的现代编译器没把初始化标记为警告,但C#编译器把它当作错误来看待。这就可以防止我们无意中从其它程序遗留下的内存中获取的垃圾值。
C#有两个方法可确保变量在使用前进行了初始化:
1.变量是类或者结构体中的字段,入股哦没有显示初始化,创建这些变量时,其默认值就是0。
2.方法的局部变量必须在代码中显式初始化,之后再能在语句中使用它们的值。此时,初始化不是在声明该变量时进行的,但编译器会通过方法检查所有可能的路径,如果检测到局部变量在初始化之前就使用了它的值,就会产生错误。例如:
public static int Main() { int d; Console.WriteLine(d); return 0; }
类型推断使用var关键字。声明变量的语法有些变化。编译器可以根据变量的初始化值“推断”变量的类型。:
int a = 0;
====》
var a = 0;
即使 a 从来没有声明为int,编译器也可以确定,只要 a 在其作用域内,就是一个int。编译后,上面两个语句是等价的。
总结:
1.变量必须初始化。否则,编译器就没有推断变量类型的依据。
2.初始化不能为空。
3.初始化必须放在表达式中。
4.不能把初始化器设置为一个对象,除非在初始化器中创建了一个新的对象。
声明了变量,推断出了类型后,就不能改变变量的类型了。变量的类型确定后,就遵循其它变量类型遵循的强类型化规则。
变量的作用域:
变量的作用域就是可以访问该变量的代码区域。一般情况下,确定作用域遵循以下的规则:
1.只要类在某个作用域内,其字段(也称为成员变量)也在该作用域内。
2.局部变量存在于表示声明该变量的块语句或方法结束的右括号之前的作用域内。
3.for、while或类似语句中声明的局部变量存在于该循环体内。
局部变量的作用域冲突
public static int Main() { int j = 20; for (int i = 0; i < 10; i++) { int j = 0; } return 0; } 当前这段代码会产生错误。 作用域冲突。
某些情况下,可以区分名称相同(尽管其完全限定的名称不同)、作用域相同的两个标识符。此时比那一起允许声明第二个变量。原因是C#变量之间有一个基本的区分,它把在类型级别声明的变量看作字段(成员变量),而在方法中声明的变量看作局部变量。
常量:
1.常量必须在声明时初始化。指定了其值后,就不能改写了。
2.常量的值必须在编译时用于计算。因此,不能从一个常量中提取的值来初始化变量。(如果需要这么作,应该使用只读字段)
3.常量总是静态的。但注意不允许在常量声明中包含修饰符static。
使用常量的好处:
1.由于使用易于读取的名称(名称的值易于理解)替代了较难读取的数字或字符串,常量使程序变得更易于阅读。
2.常量使程序更易于修改。例如,在C#程序中有一个SalesTax常量,该常量的值为6%。如果以后的销售税率发生变化,把新值赋给这个常量,就可以修改所有的税款计算结果,而不必查找整个程序取修改税率为0.06的每个项。
3.常量更容易避免程序出现错误。如果在声明常量的位置意外的某个地方将两一个值赋值给常量,编译器就会报告错误。