第二章 C#基础
VS 命令行命令"csc" 可以编译cs文件生成可执行文件
变量初始化该注意的两点:
1.默认值. 变量是类或字段的话,如果没有显示初始化.创建这些变量时,其值就默认是0或null.
2.局部变量不设置默认值.方法内部的局部变量必须在代码中显式初始化,之后才能在语句中使用他们的值.
通过var关键字可以使用类型推断功能
常量的特征:
1.常量必须在声明时初始化,区别于readonly字段。
2.常量的值必须能在编译时用于计算,即常量为编译期静态解释的常量,区别于readonly字段。不能用从一个变量中提取的值来初始化常量。
3.常量总是静态的,不能与关键字static合用,区别于readonly字段。
常量优点:易读,易改。
值类型与引用类型的区别:
1.值类型直接存储数值,引用类型存储的是对对象的引用
2.存储的地方不同.值类型存储在堆栈(stack)中,引用类型存储在托管堆中,对象和引用都存储在堆上
如果要把自己的类型定义为值类型,就应声明为一个结构
Object 类型是所有类型(包括值类型)的一个最终基类,它是一个模板
String:
string类型与其他引用类型(尤其是stringbuilder)的区别:当把一个字符串常量赋给另一个字符串时,会得到对内存中同一个字符串的两个引用,但是修改一个字符串,就会创建一个全新的string对象,而另一个字符串仍指向原字符串,没有改变。
设置命名空间别名的语法:using Alias=NamespaceName; 命名空间别名的修饰符是"::".
Main()方法:
1.静态 2.返回值int或void 3.唯一
Main()方法的参数 string[] args:命令行参数,在调用程序时,可以让CLR包含一个参数,将该命令行参数转送给程序。
C#预处理命令:
#define 声明一个符号
#undef 删除符号
#if #elif #else #endif(条件编译) 后加符号名,如果程序前边定义了该符号则后面代码执行
#warning 可以视为提示作用,不影响编译
#error 导致程序编译错误,退出编译
#region #endregion 标记代码块
#pragma 抑制#warning #error