C# 8.0是Microsoft对其旗舰编程语言的第七次重大升级,这次升级极大地提高了C#语言的功能和灵活性。一方面,它提供了一些高级的抽象,例如查询表达式和异步延续;另一方面,它允许通过自定义值类型和可选的指针结构进行底层的效率优化。
C#语言特性的增长也极大地加重了我们的学习负担。虽然一些工具如Microsoft IntelliSense和在线参考文档可以提供诸多便利,但若要使用它们,仍需要一些现有的概念和知识体系作为支撑。本书以简明统一的方式(而非烦琐冗长的介绍)准确阐释了这些知识。
与之前的五个版本一样,本书也是围绕概念和用例来组织的,因此无论是顺序阅读还是随意浏览都会大有裨益。虽然本书只要求读者具备基本的背景知识,但是它仍然具有一定的深度,因此本书也适合中高级读者阅读。
本书内容涵盖C#语言、公共语言运行时(Common Language Runtime,CLR)和.NET Core核心程序集。我们之所以做出这样的选择是希望为一些难以理解的主题,例如并发、安全性以及访问操作系统功能留出足够的篇幅,而同时又不对内容的深度和可读性造成显著的影响。本书详细标记了C# 8的新特性,因此亦可同时作为C# 7的参考资料。
【目标读者】
本书主要针对中高级开发人员。本书不要求读者具备C#知识,但需要读者具备一定的通用编程经验。对于初学者,本书适合作为教材以外的补充书籍,而非替代编程教材。
本书非常适合与那些着眼于介绍具体应用技术的书籍配合阅读,例如介绍ASP.NET Core、Windows Presentation Foundation(WPF)和Universal Windows Platform(UWP)等技术的书籍。因为那些书籍往往会省略语言和.NET Core方面的内容,而这些内容正是本书的重点。
本书不适合想匆匆浏览每一种.NET技术的读者阅读,亦不适合关心特定领域(例如移动端设备开发)API使用方式的读者阅读。
【本书的结构】
本书第2~4章将详细介绍C#语言。首先介绍最基本的语法、类型和变量。而后会介绍一些高级的特性,如不安全代码以及预处理指令。如果你是C#语言的初学者,请循序渐进地阅读这些章节。
其余各章则涵盖了.NET Core的核心功能,包括语言集成查询(Language-Integrated Query,LINQ)、XML、集合、并发、I/O和网络、内存管理、反射、动态编程、特性、安全以及原生互操作性等主题。第5~6章是后续章节主题的基础,除这两章之外,其余各章可以按照需要以任何顺序阅读。LINQ相关的三章最好按顺序阅读,其中的部分章节需要一些并发相关的知识,这些知识将在第14章中介绍。
使用本书所需的其他材料
如需下载所有的示例代码,请在LINQPad底部左侧的“Samples”选项卡中单击“Download more samples”按钮,并选择“C# 8.0 in a Nutshell”。
.NET Core支持Windows、Linux和macOS。我们在Ubuntu Linux 18.04中对部分跨平台特性进行了测试。详细代码请参见GitHub(https://github.com/ericjohannsen/Nutshell8)。