《C#8.0本质论》封面

内容简介

作为历年来深受各层次开发人员欢迎的C#指南,本书讨论了C#3.0到C#8.0中的重要C#特性,强调了现代编程模式,可帮助读者编写简洁、强大、健壮、安全且易于维护的C#代码。

在本书中,世界知名C#专家MarkMichaelis对C#语言进行了全面而深入的探讨,并提供了关于空引用类型、索引和区间、增强模式匹配、异步流等关键C#8.0增强功能的专业论述。他用简洁的例子阐释关键C#构造,并提供了大量优秀实践编程规范,可为你快速掌握专家级C#编程技能并进行高效软件开发提供翔实指导。

本书内容:

使用结构化编程构造直接编写功能代码

了解可空引用类型的复杂性和解决方案

彻底掌握C#对象构造,包括类、继承和接口

使用泛型、委托、lambda表达式和事件减少代码冗余

充分利用集合,包括新的标准查询运算符集合API

充分利用反射、属性和声明式编程范式

使用基于任务的异步模式和C#8.0异步流改进多线程处理

通过并行处理数据和多线程任务提高性能

使用增强的模式匹配语法编写复杂类型

与用其他语言编写的非托管代码(包括基于C的API)进行互操作

探索C#程序与底层CLI运行时之间的关系

作者简介

马克.米凯利斯(MarkMichaelis)

MarkMichaelis是创新型软件架构和开发公司IntelliTect的创始人、首席技术架构师和培训师。Mark领导着他的公司不断进取,同时在世界各地举办有关领导力或技术的会议,并代表微软或其他客户进行演讲。他还撰写了大量文章和书籍,并且是东华盛顿大学的客座教授、Spokane.NET用户组的创始人,以及每年一届的TEDxCoeurd'Alene活动的联合组织者。

作为世界知名的C#专家,Mark自2007年以来一直担任微软区域总监,并荣任微软MVP超过25年。

Mark拥有伊利诺伊大学哲学专业文学学士学位和伊利诺伊理工大学计算机科学硕士学位。

目录

第1章 C#概述/1
1.1 Hello,World/2
1.2 C#语法基础/9
1.3 使用变量/16
1.4 控制台输入和输出/18
1.5 托管执行和CLI/24
1.6 多个.NET框架/28
1.7 小结/30
第2章 数据类型/31
2.1 基本数值类型/31
2.2 更多基本类型/38
2.3 数据类型转换/49
2.4 小结/55
第3章 更多数据类型/56
3.1 类型的划分/56
3.2 将变量声明为可空/58
3.3 隐式类型的局部变量/62
3.4 元组/64
3.5 数组/68
3.6 小结/82
第4章 操作符和控制流程/83
4.1 操作符/83
4.2 控制流程概述/95
4.3 代码块/99
4.4 代码块、作用域和声明空间/101
4.5 布尔表达式/102
4.6 关于null的编程/107
4.7 按位操作符/112
4.8 控制流程语句/116
4.9 跳转语句/124
4.10 C#预处理器指令/129
4.11 小结/135
第5章 方法和参数/136
5.1 方法的调用/137
5.2 方法的声明/141
5.3 using指令/145
5.4 Main()的返回值和参数/149
5.5 高级方法参数/151
5.6 递归/159
5.7 方法重载/162
5.8 可选参数/164
5.9 用异常实现基本错误处理/167
5.10 小结/178
第6章 类/179
6.1 类的声明和实例化/182
6.2 实例字段/184
6.3 实例方法/186
6.4 使用this关键字/187
6.5 访问修饰符/193
6.6 属性/194
6.7 构造函数/207
6.8 不可空引用类型属性与构造函数/214
6.9 可空特性/217
6.10 解构函数/219
6.11 静态成员/220
6.12 扩展方法/228
6.13 封装数据/229
6.14 嵌套类/231
6.15 分部类/233
6.16 小结/236
第7章 继承/237
7.1 派生/238
7.2 重写基类/244
7.3 抽象类/253
7.4 所有类都从System.Object派生/258
7.5 用is操作符进行模式匹配/259
7.6 switch语句中的模式匹配/264
7.7 避免对多态类对象使用模式匹配/265
7.8 小结/267
第8章 接口/268
8.1 接口概述/269
8.2 通过接口实现多态性/270
8.3 接口实现/274
8.4 在实现类和接口之间转换/278
8.5 接口继承/278
8.6 多接口继承/280
8.7 接口上的扩展方法/281
8.8 版本升级/283
8.9 扩展方法与默认接口成员/295
8.10 比较接口和抽象类/296
8.11 比较接口和特性/297
8.12 小结/297
第9章 值类型/298
9.1 结构/301
9.2 装箱/305
9.3 枚举/311
9.4 小结/319
第10章 合式类型/321
10.1 重写object的成员/321
10.2 操作符重载/331
10.3 引用其他程序集/337
10.4 类型封装/342
10.5 定义命名空间/343
10.6 XML注释/346
10.7 垃圾回收/349
10.8 资源清理/352
10.9 推迟初始化/363
10.10 小结/365
第11章 异常处理/366
11.1 多异常类型/366
11.2 捕捉异常/368
11.3 重新抛出现有异常/370
11.4 常规catch块/371
11.5 异常处理规范/372
11.6 自定义异常/374
11.7 重新抛出包装的异常/377
11.8 小结/380
第12章 泛型/381
12.1 如果C#没有泛型/381
12.2 泛型类型概述/386
12.3 约束/395
12.4 泛型方法/407
12.5 协变性和逆变性/411
12.6 泛型的内部机制/416
12.7 小结/419
第13章 委托和Lambda表达式/420
13.1 委托概述/421
13.2 声明委托类型/424
13.3 Lambda表达式/430
13.4 匿名方法/435
13.5 委托没有结构相等性/436
13.6 外部变量/438
13.7 表达式树/441
13.8 小结/447
第14章 事件/448
14.1 使用多播委托实现Publish-Subscribe模式/449
14.2 理解事件/460
14.3 小结/468
第15章 支持标准查询操作符的集合接口/469
15.1 集合初始化器/470
15.2 IEnumerable使类成为集合/472
15.3 标准查询操作符/476
15.4 匿名类型之于LINQ/503
15.5 小结/509
第16章 使用查询表达式的LINQ/510
16.1 查询表达式概述/510
16.2 查询表达式只是方法调用/525
16.3 小结/526
第17章 构建自定义集合/528
17.1 更多集合接口/529
17.2 主要集合类/530
17.3 提供索引器/544
17.4 返回null或者空集合/547
17.5 迭代器/547
17.6 小结/559
第18章 反射、特性和动态编程/560
18.1 反射/560
18.2 nameof操作符/569
18.3 特性/571
18.4 使用动态对象进行编程/585
18.5 小结/592
第19章 多线程概述/594
19.1 多线程基础/595
19.2 异步任务/600
19.3 取消任务/614
19.4 使用System.Threading/618
19.5 总结/619
第20章 基于任务的异步模式编程/620
20.1 同步执行高延迟操作/621
20.2 使用TPL实现异步执行高延迟操作/623
20.3 使用async/await实现基于任务的异步模式/627
20.4 异步返回值ValueTask/632
20.5 异步流/633
20.6 IAsyncDisposable接口以及awaitusing声明和语句/637
20.7 使用LINQ和IAsync-Enumerable/637
20.8 返回void的异步方法/639
20.9 异步Lambda表达式和本地函数/642
20.10 任务调度器和同步上下文/647
20.11 在WindowsUI程序中使用async/await/649
20.12 小结/652
第21章 并行迭代/653
21.1 并行执行循环迭代/653
21.2 并行执行LINQ查询/661
21.3 小结/666
第22章 线程同步/667
22.1 线程同步的意义/668
22.2 计时器/689
22.3 小结/691
第23章 平台互操作性和不安全代码/692
23.1 平台调用/693
23.2 指针和地址/703
23.3 通过委托执行不安全代码/710
23.4 小结/711
第24章 公共语言基础结构/712
24.1 CLI的定义/712
24.2 CLI的实现/713
24.3 .NETStandard/715
24.4 基类库/716
24.5 将C#编译成机器码/716
24.6 运行时/717
24.7 程序集、清单和模块/720
24.8 公共中间语言/722
24.9 公共类型系统/722
24.10 公共语言规范/723
24.11 元数据/723
24.12 .NETNative和AOT编译/724
24.13 小结/724
······

最后修改:2024 年 06 月 11 日