作为历年来深受各层次开发人员欢迎的C#指南,本书讨论了从C# 3.0到7.0的*重要的C#特性,强调了现代编程模式,可帮助读者编写简洁、强大、健壮、安全和易于维护的C#代码。C#专家Mark Michaelis对语言进行了全面而深入的探讨,提供了对关键C# 7.0增强、C# 7.0和.NET Core/.NET Standard的配合使用以及跨平台编译的专业论述。
译者序
推荐序
前言
致谢
作者简介
第1章 C#概述 / 1
1.1 Hello, World / 1
1.2 C#语法基础 / 8
1.3 使用变量 / 14
1.4 控制台输入和输出 / 17
1.5 注释 / 20
1.6 托管执行和CLI / 22
1.7 多个.NET框架 / 26
1.8 小结 / 28
第2章 数据类型 / 29
2.1 基本数值类型 / 29
2.2 更多基本类型 / 36
2.3 null和void / 46
2.4 数据类型转换 / 47
2.5 小结 / 52
第3章 更多数据类型 / 53
3.1 类型的划分 / 53
3.2 可空修饰符 / 55
3.3 元组 / 57
3.4 数组 / 62
3.5 小结 / 74
第4章 操作符和控制流程 / 75
4.1 操作符 / 75
4.2 控制流程概述 / 87
4.3 代码块({}) / 91
4.4 代码块、作用域和声明空间 / 93
4.5 布尔表达式 / 94
4.6 按位操作符(<<,>>,|,&,^,~) / 101
4.7 控制流程语句(续) / 106
4.8 跳转语句 / 115
4.9 C#预处理器指令 / 119
4.10 小结 / 124
第5章 方法和参数 / 126
5.1 方法的调用 / 127
5.2 方法的声明 / 131
5.3 using指令 / 135
5.4 Main()的返回值和参数 / 139
5.5 高级方法参数 / 141
5.6 递归 / 149
5.7 方法重载 / 152
5.8 可选参数 / 154
5.9 用异常实现基本错误处理 / 157
5.10 小结 / 168
第6章 类 / 169
6.1 类的声明和实例化 / 172
6.2 实例字段 / 174
6.3 实例方法 / 176
6.4 使用this关键字 / 177
6.5 访问修饰符 / 183
6.6 属性 / 184
6.7 构造函数 / 197
6.8 静态成员 / 205
6.9 扩展方法 / 213
6.10 封装数据 / 214
6.11 嵌套类 / 216
6.12 分部类 / 218
6.13 小结 / 222
第7章 继承 / 223
7.1 派生 / 224
7.2 重写基类 / 232
7.3 抽象类 / 242
7.4 所有类都从System.Object派生 / 246
7.5 使用is操作符验证基础类型 / 247
7.6 用is操作符进行模式匹配 / 248
7.7 switch语句中的模式匹配 / 248
7.8 使用as操作符进行转换 / 250
7.9 小结 / 251
第8章 接口 / 252
8.1 接口概述 / 253
8.2 通过接口实现多态性 / 254
8.3 接口实现 / 258
8.4 在实现类和接口之间转换 / 262
8.5 接口继承 / 263
8.6 多接口继承 / 265
8.7 接口上的扩展方法 / 265
8.8 通过接口实现多继承 / 266
8.9 版本控制 / 269
8.10 比较接口和类 / 270
8.11 比较接口和特性 / 271
8.12 小结 / 271
第9章 值类型 / 272
9.1 结构 / 275
9.2 装箱 / 279
9.3 枚举 / 285
9.4 小结 / 293
第10章 合式类型 / 295
10.1 重写object的成员 / 295
10.2 操作符重载 / 305
10.3 引用其他程序集 / 311
10.4 定义命名空间 / 318
10.5 XML注释 / 320
10.6 垃圾回收 / 323
10.7 资源清理 / 325
10.8 推迟初始化 / 332
10.9 小结 / 333
第11章 异常处理 / 334
11.1 多异常类型 / 334
11.2 捕捉异常 / 336
11.3 常规catch块 / 339
11.4 异常处理规范 / 341
11.5 自定义异常 / 343
11.6 重新抛出包装的异常 / 346
11.7 小结 / 349
第12章 泛型 / 350
12.1 如果C#没有泛型 / 350
12.2 泛型类型概述 / 355
12.3 约束 / 364
12.4 泛型方法 / 374
12.5 协变性和逆变性 / 377
12.6 泛型的内部机制 / 382
12.7 小结 / 385
第13章 委托和Lambda表达式 / 386
13.1 委托概述 / 387
13.2 声明委托类型 / 390
13.3 Lambda表达式 / 396
13.4 匿名方法 / 401
13.5 小结 / 413
第14章 事件 / 414
14.1 使用多播委托编码Publish-Subscribe模式 / 415
14.2 理解事件 / 426
14.3 小结 / 435
第15章 支持标准查询操作符的集合接口 / 436
15.1 集合初始化器 / 437
15.2 IEnumerable<T>使类成为集合 / 439
15.3 标准查询操作符 / 444
15.4 匿名类型之于LINQ / 470
15.5 小结 / 477
第16章 使用查询表达式的LINQ / 478
16.1 查询表达式概述 / 478
16.2 查询表达式只是方法调用 / 493
16.3 小结 / 494
第17章 构建自定义集合 / 496
17.1 更多集合接口 / 497
17.2 主要集合类 / 498
17.3 提供索引器 / 512
17.4 返回null或者空集合 / 515
17.5 迭代器 / 515
17.6 小结 / 527
第18章 反射、特性和动态编程 / 528
18.1 反射 / 528
18.2 特性 / 539
18.3 使用动态对象进行编程 / 557
18.4 小结 / 565
第19章 多线程处理 / 566
19.1 多线程处理基础 / 568
19.2 使用System.Threading / 572
19.3 异步任务 / 577
19.4 取消任务 / 591
19.5 基于任务的异步模式 / 596
19.6 并行迭代 / 618
19.7 并行执行LINQ查询 / 626
19.8 小结 / 630
第20章 线程同步 / 631
20.1 线程同步的意义 / 632
20.2 计时器 / 653
20.3 小结 / 655
第21章 平台互操作性和不安全代码 / 656
21.1 平台调用 / 657
21.2 指针和地址 / 667
21.3 通过委托执行不安全
......