C#入门经典 Part 1
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应用程序所经历的步骤:
- 使用某种.NET兼容语言编写程序代码;
- 把代码编译为CIL,存储在程序集中;
- 在执行代码时,使用JIT编译器将代码编译为本机代码;
- 在托管的CLR环境下运行本机代码以及其他应用程序或进程。
C#是唯一彻头彻尾为.NET Framework设计的语言。
CH 3
代码大纲功能: 展开和折叠代码区域(#: 预处理指令)1
2
3
4
5
6
7#region annotation
public void foo() {
// ...
}
#endregion
格式化输出1
2
3int a = 1;
string str = "apple";
Console.WriteLine("{0} {1}.", a, str); // 1 apple.
基本变量名的第一个字符必须是字幕、下划线或@。
Microsoft建议: 对于简单变量,使用camelCase规则,对于比较高级的命名使用PascalCase。
可以使用Unicode转义序列指定其他任何Unicode字符(如\u0027
指代'
)。
@: 保持字符串格式1
2
3string str = @"This is
a
string.";
double num = Convert.ToDouble(Console.ReadLine());
CH 5
溢出检查: checked
& unchecked
1
2
3byte 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
5int[] arr = new int[10];
int len = arr.Length;
foreach(var i in arr) {
// ...
}
多维数组1
2
3
4
5
6double[,] arr = new double[3, 4];
arr[1, 2] = 3.0;
foreach(var ele in arr) {
// ...
}
数组的数组1
2
3
4
5
6
7
8
9int[][] 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 | string str = "..."; |