CH 1

.NET Framework主要包含一个庞大的代码库,可以在客户语言中通过OOP来使用这些代码。

Common Type System, CTS: 通用类型系统。

Common Language Runtime, CLR: 公共语言运行库。

Common Intermediate Language, CIL: 通用中间语言。

Just-In-Time(JIT)编译器: 把CIL编译为专用于OS和目标机器结构的本机代码。

Assembly: 程序集。包括可执行的应用程序文件和其他应用程序使用的库。在编译应用程序时,所创建的CIL代码存储在程序集中。除CIL外,程序集还包含元信息和可选的资源。元信息允许程序集是完全自描述的。

Global Assembly Cache, GAC: 全局程序集缓存。

托管代码: CLR对正在执行的用.NET Framework编写的代码进行管理。管理内存、处理安全性、跨语言调试、垃圾回收。

创建.NET应用程序所经历的步骤:

  1. 使用某种.NET兼容语言编写程序代码;
  2. 把代码编译为CIL,存储在程序集中;
  3. 在执行代码时,使用JIT编译器将代码编译为本机代码;
  4. 在托管的CLR环境下运行本机代码以及其他应用程序或进程。

C#是唯一彻头彻尾为.NET Framework设计的语言。


CH 3

代码大纲功能: 展开和折叠代码区域(#: 预处理指令)

1
2
3
4
5
6
7
#region annotation

public void foo() {
// ...
}

#endregion

格式化输出

1
2
3
int a = 1;
string str = "apple";
Console.WriteLine("{0} {1}.", a, str); // 1 apple.

基本变量名的第一个字符必须是字幕、下划线或@。

Microsoft建议: 对于简单变量,使用camelCase规则,对于比较高级的命名使用PascalCase。

可以使用Unicode转义序列指定其他任何Unicode字符(如\u0027指代')。

@: 保持字符串格式

1
2
3
string str = @"This is 
a
string.";

double num = Convert.ToDouble(Console.ReadLine());


CH 5

溢出检查: checked & unchecked

1
2
3
byte a;
int i = 260;
a = checked((byte)i); // 程序崩溃

Convert显示类型转换: Convert.To...()。总是进行溢出检查。

string转为枚举值

1
(enumType)Enum.Parse(typeof(enumType), enumString);

struct结构:值类型,默认可访问性private。

数组

1
2
3
4
5
int[] arr = new int[10];
int len = arr.Length;
foreach(var i in arr) {
// ...
}

多维数组

1
2
3
4
5
6
double[,] arr = new double[3, 4];
arr[1, 2] = 3.0;

foreach(var ele in arr) {
// ...
}

数组的数组

1
2
3
4
5
6
7
8
9
int[][] arr = new int[2][];
arr[0] = new int[3];
arr[1] = new int[4]{1, 2, 3, 4};

foreach(int[] row in arr) {
foreach(int i in row) {
// ...
}
}

string类型变量可以看成是char变量的只读数组。

1
2
3
4
5
6
string str = "...";
str.ToCharArray();
str.ToLower();
str.ToUpper();
str.Trim(/* [char[] trimChars] */);
str.Split(/* [char[] seperator] */);