第1章 C#概述1
1.1 Hello, World2
1.2 C#语法基础11
1.3 使用变量20
1.4 控制台输入和输出24
1.5 注释28
1.6 托管执行和CLI32
1.7 多个.NET框架37
第2章 数据类型43
2.1 基本数值类型44
2.2 更多基本类型53
2.3 null和void67
2.4 数据类型转换69
第3章 更多数据类型77
3.1 类型的划分77
3.2 可空修饰符80
3.3 元组83
3.4 数组90
第4章 操作符和控制流程109
4.1 操作符110
4.2 控制流程概述126
4.3 代码块132
4.4 代码块、作用域和声明空间135
4.5 布尔表达式137
4.6 按位操作符147
4.7 控制流程语句(续)153
4.8 跳转语句165
4.9 C#预处理器指令171
第5章 方法和参数181
5.1 调用方法182
5.2 声明方法189
5.3 using指令195
5.4 Main()的返回值和参数200
5.5 高级方法参数203
5.6 递归215
5.7 方法重载217
5.8 可选参数220
5.9 用异常实现基本错误处理225
第6章 类241
6.1 类的声明和实例化245
6.2 实例字段249
6.3 实例方法251
6.4 使用this关键字252
6.5 访问修饰符259
6.6 属性261
6.7 构造函数278
6.8 静态成员289
6.9 扩展方法299
6.10 封装数据301
6.11 嵌套类304
6.12 分部类307
第7章 继承313
7.1 派生314
7.2 重写基类326
7.3 抽象类338
7.4 所有类都从System.Object派生344
7.5 使用is操作符验证基础类型345
7.6 使用is操作符进行模式匹配346
7.7 switch语句中的模式匹配347
7.8 使用as操作符进行转换349
第8章 接口353
8.1 接口概述354
8.2 通过接口实现多态性355
8.3 接口实现360
8.4 在实现类和接口之间转换366
8.5 接口继承366
8.6 多接口继承369
8.7 接口上的扩展方法369
8.8 通过接口实现多继承371
8.9 版本控制374
8.10 比较接口和类375
8.11 比较接口和特性377
第9章 值类型379
9.1 结构383
9.2 装箱390
9.3 枚举398
第10章 合式类型411
10.1 重写object的成员411
10.2 操作符重载424
10.3 引用其他程序集432
10.4 定义命名空间442
10.5 XML注释445
10.6 垃圾回收449
10.7 资源清理452
10.8 推迟初始化461
第11章 异常处理465
11.1 多异常类型465
11.2 捕捉异常469
11.3 常规catch块473
11.4 异常处理规范475
11.5 自定义异常479
11.6 重新抛出包装的异常483
第12章 泛型487
12.1 如果C#没有泛型488
12.2 泛型类型概述493
12.3 约束506
12.4 泛型方法519
12.5 协变性和逆变性524
12.6 泛型的内部机制531
第13章 委托和Lambda表达式537
13.1 委托概述538
13.2 声明委托类型542
13.3 Lambda表达式550
13.4 匿名方法556
第14章 事件575
14.1 使用多播委托编码Publish-Subscribe模式576
14.2 理解事件591
第15章 支持标准查询操作符的集合接口603
15.1 集合初始化器604
15.2 IEnumerable使类成为集合607
15.3 标准查询操作符613
15.4 匿名类型之于LINQ646
第16章 使用查询表达式的LINQ657
16.1 查询表达式概述658
16.2 查询表达式只是方法调用676
第17章 构建自定义集合679
17.1 更多集合接口680
17.2 主要集合类683
17.3 提供索引器702
17.4 返回null或者空集合705
17.5 迭代器705
第18章 反射、特性和动态编程721
18.1 反射722
18.2 特性735
18.3 使用动态对象进行编程759
第19章 多线程处理771
19.1 多线程处理基础774
19.2 使用System.Threading781
19.3 异步任务789
19.4 取消任务810
19.5 基于任务的异步模式816
19.6 并行迭代846
19.7 并行执行LINQ查询856
第20章 线程同步863
20.1 线程同步的意义864
20.2 计时器893
第21章 平台互操作性和不安全代码897
21.1 平台调用898
21.2 指针和地址910
21.3 通过委托执行不安全代码920
第22章 公共语言基础结构(CLI)923
22.1 CLI的定义924
22.2 CLI的实现925
22.3 .NET标准928
22.4 BCL929
22.5 C#编译成机器码929
22.6 运行时932
22.7 程序集、清单和模块936
22.8 公共中间语言939
22.9 公共类型系统939
22.10 公共语言规范940
22.11 元数据941
22.12 NET Native和AOT编译942
Contents
1 Introducing C# 1
Hello, World 2
C# Syntax Fundamentals 11
Working with Variables 20
Console Input and Output 24
Commne ts 28
Managed Execution and the Common Language Infrastructure 32
Multiple .NET Frameworks 37
2 Data Types 43Fundamental Numeric Types 44
More Fundamental Types 53
null and void 67
Conversions between Data Types 69
3 More with Data Types 77
Categories of Types 77
Nullable Modifier 80
Tuples 83
Arrays 90
4 Operators and Control Flow 109
Operators 110
Introducing Flow Control 126
Code Blocks ({}) 132
Code Blocks, Scopes, and Declaration Spaces 135
Boolean Expressions 137
Bitwise Operators (>, |, &, ^, ~) 147