C#入门经典 第8版+C#高级编程 第11版 全2册 c#语言基础程序设计教程c#asp.net Vpdf下载pdf下载

C#入门经典 第8版+C#高级编程 第11版 全2册 c#语言基础程序设计教程c#asp.net V百度网盘pdf下载

作者:
简介:本篇主要提供C#入门经典 第8版+C#高级编程 第11版 全2册 c#语言基础程序设计教程c#asp.net Vpdf下载
出版社:
出版时间:
pdf下载价格:9.00¥


预览


内容介绍

商品基本信息,请以下列介绍为准
图书名称:

C#入门经典(第8版)

C#高级编程(第11版) C# 7 & .NET Core 2.0

ISBN号:

9787302517740    118.00

9787302522560    198.00

出版社: 清华大学出版社


  编辑推荐


C#入门经典(第8版)

C#语言应用领域极广,是编程语言中的翘楚。《C#入门经典》系列是屡获殊荣的C#名著和超级畅销书;新版的《C#入门经典(第8版)》由三位专家联袂撰写,浓墨重彩地描述使用C# 7和Visual Studio 2017编写程序的基础知识,是编程新手的终极指南,不要求读者具有任何编程经验。书中讲述变量、流程控制、面向对象编程、Web编程、Windows编程、数据库和XML等知识点。“试一试”部分以分步指南为特色,讲解细腻,助你编写有用代码,构建更智能、性能更高的应用程序。 
C#高级编程(第11版) C# 7 & .NET Core 2.0

C# 7内幕指南,包括高级新特性

目前Visual Studio 2017提供了C# 7。发布为NuGet包的每个.NET Core部分都进行了更新。阅读这本专家级指南是经验丰富的程序员提高效率的更快捷方式。C# 7以更快的速度完成更多工作,没有人比Christian Nagel更适合传播在现实世界中极有价值的全新信息。本书论述清晰,内容完整详尽,为开发人员展示了如何将.NET引入非微软平台,如何操作这些平台上的工具,例如Docker、Gulp和NPM。


  内容简介

C#入门经典(第8版)

主要内容 1讲解变量、表达式、流程控制、函数、调试和错误处理 2涵盖面向对象编程、类、类成员、Web编程、Windows编程和Windows窗体等主题 3阐述代码导航、IntelliSense、重构和代码修复等增强功能如何帮助你更快捷、更轻松地编写程序 4讲述如何尽早发现和修复bug,以免在后期耗费时间解决棘手问题 5探讨云、跨平台和数据访问编程 6wrox.com提供大量可下载的代码示例
C#高级编程(第11版) C# 7 & .NET Core 2.0

★为需要新工具的高级开发人员介绍了C# 7和.NET Core 2.0的扩展新特性 ★揭示了Visual Studio 2017的新技巧和切合实际的提示,包括新的用户界面、新增的模板、编辑器的改进等 ★论述了计划工作流的全新方式,使编码更快,诊断和调试更精确,测试更频繁,发布更自信 ★为开发在Android、iOS、Windows、Linux、网络和云上运行的应用程序提供了循序渐进的指南 ★掌握Visual Studio的高效率特性,以加速AI革新


  目录

C#入门经典(第8版)

目    录
第 I 部分  C# 语 言
第1章  C#简介   3
1.1  .NET Framework的含义   3
1.1.1  .NET Framework的内容   4
1.1.2  .NET Standard和.NET Core   4
1.1.3  使用.NET Framework和.NET Core编写
应用程序   4
1.2  C#的含义   7
1.2.1  用C#能编写什么样的应用程序   7
1.2.2  本书中的C#   8
1.3  Visual Studio 2017   8
1.3.1  Visual Studio 2017产品   8
1.3.2  解决方案   9
1.4  本章要点   9
第2章  编写C#程序   11
2.1  Visual Studio 2017开发环境   12
2.2  控制台应用程序   15
2.2.1  Solution Explorer窗口   17
2.2.2  Properties窗口   18
2.2.3  Error List窗口   18
2.3  桌面应用程序   19
2.4  本章要点   21
第3章  变量和表达式   23
3.1  C#的基本语法   23
3.2  C#控制台应用程序的基本结构   25
3.3  变量   26
3.3.1  简单类型   26
3.3.2  变量的命名   29
3.3.3  字面值   30
3.4  表达式   32
3.4.1  数学运算符   32
3.4.2  赋值运算符   35
3.4.3  运算符的优先级   36
3.4.4  名称空间   37
3.5  习题   37
3.6  本章要点   38
第4章  流程控制   39
4.1  布尔逻辑   39
4.1.1  布尔按位运算符和赋值运算符   41
4.1.2  运算符优先级的更新   42
4.2  分支   43
4.2.1  三元运算符   43
4.2.2  if语句   43
4.2.3  switch语句   46
4.3  循环   48
4.3.1  do循环   48
4.3.2  while循环   50
4.3.3  for循环   51
4.3.4  循环的中断   52
4.3.5  无限循环   52
4.4  习题   53
4.5  本章要点   53
第5章  变量的更多内容   55
5.1  类型转换   55
5.1.1  隐式转换   56
5.1.2  显式转换   57
5.1.3  使用Convert命令进行显式转换   59
5.2  复杂的变量类型   61
5.2.1  枚举   61
5.2.2  结构   64
5.2.3  数组   66
5.3  字符串的处理   73
5.4  习题   77
5.5  本章要点   77
第6章  函数   79
6.1  定义和使用函数   80
6.1.1  返回值   81
6.1.2  参数   82
6.2  变量的作用域   88
6.2.1  其他结构中变量的作用域   91
6.2.2  参数和返回值与全局数据   92
6.2.3  局部函数   92
6.3  Main()函数   93
6.4  结构函数   95
6.5  函数的重载   95
6.6  委托   97
6.7  习题   99
6.8  本章要点   99
第7章  调试和错误处理   101
7.1  Visual Studio中的调试   101
7.1.1  非中断(正常)模式下的调试   102
7.1.2  中断模式下的调试   108
7.2  错误处理   113
7.2.1  try...catch...finally   114
7.2.2  throw表达式   119
7.2.3  列出和配置异常   119
7.3  习题   119
7.4  本章要点   120
第8章  面向对象编程简介   121
8.1  面向对象编程的含义   121
8.1.1  对象的含义   122
8.1.2  一切皆对象   124
8.1.3  对象的生命周期   124
8.1.4  静态成员和实例类成员   125
8.2  OOP技术   126
8.2.1  接口   126
8.2.2  继承   127
8.2.3  多态性   129
8.2.4  对象之间的关系   130
8.2.5  运算符重载   131
8.2.6  事件   131
8.2.7  引用类型和值类型   131
8.3  桌面应用程序中的OOP   132
8.4  习题   135
8.5  本章要点   135
第9章  定义类   137
9.1  C#中的类定义   137
9.2  System.Object   141
9.3  构造函数和析构函数   142
9.4  Visual Studio中的OOP工具   145
9.4.1  Class View窗口   145
9.4.2  对象浏览器   146
9.4.3  添加类   147
9.4.4  类图   148
9.5  类库项目   149
9.6  接口和抽象类   152
9.7  结构类型   154
9.8  浅度和深度复制   155
9.9  习题   156
9.10  本章要点   156
第10章  定义类成员   157
10.1  成员定义   157
10.1.1  定义字段   158
10.1.2  定义方法   158
10.1.3  定义属性   159
10.1.4  元组析构   163
10.1.5  重构成员   163
10.1.6  自动属性   164
10.2  类成员的其他主题   165
10.2.1  隐藏基类方法   165
10.2.2  调用重写或隐藏的基类方法   166
10.2.3  使用嵌套的类型定义   167
10.3  接口的实现   168
10.4  部分类定义   170
10.5  部分方法定义   171
10.6  示例应用程序   172
10.6.1  规划应用程序   172
10.6.2  编写类库   172
10.6.3  类库的客户应用程序   178
10.7  Call Hierarchy窗口   179
10.8  习题   179
10.9  本章要点   180
第11章  集合、比较和转换   181
11.1  集合   181
11.1.1  使用集合   182
11.1.2  定义集合   186
11.1.3  索引符   187
11.1.4  给CardLib添加Cards集合   188
11.1.5  键控集合和IDictionary   190
11.1.6  迭代器   191
11.1.7  迭代器和集合   194
11.1.8  深度复制   194
11.1.9  给CardLib添加深度复制   195
11.2  比较   196
11.2.1  类型比较   197
11.2.2  使用is运算符模式表达式进行模式
匹配   200
11.2.3  值比较   200
11.3  转换   211
11.3.1  重载转换运算符   211
11.3.2  as运算符   212
11.4  习题   213
11.5  本章要点   213
第12章  泛型   215
12.1  泛型的含义   215
12.2  使用泛型   216
12.2.1  可空类型   216
12.2.2  System.Collections.Generic名称空间   222
12.3  定义泛型类型   229
12.3.1  定义泛型类   229
12.3.2  定义泛型接口   236
12.3.3  定义泛型方法   237
12.3.4  定义泛型委托   238
12.4  变体   238
12.4.1  协变   239
12.4.2  抗变   239
12.5  习题   240
12.6  本章要点   240
第13章  高级C#技术   243
13.1  ::运算符和全局名称空间限定符   244
13.2  定制异常   245
13.3  事件   246
13.3.1  事件的含义   246
13.3.2  处理事件   247
13.3.3  定义事件   249
13.4  扩展和使用CardLib   254
13.5  特性   260
13.5.1  读取特性   260
13.5.2  创建特性   261
13.6  初始化器   262
13.6.1  对象初始化器   262
13.6.2  集合初始化器   263
13.7  类型推理   266
13.8  匿名类型   267
13.9  动态查找   270
13.10  高级方法参数   273
13.10.1  可选参数   273
13.10.2  命名参数   274
13.11  Lambda表达式   277
13.11.1  复习匿名方法   277
13.11.2  把Lambda表达式用于匿名方法   278
13.11.3  Lambda表达式的参数   280
13.11.4  Lambda表达式的语句体   281
13.11.5  Lambda表达式用作委托和
表达式树   281
13.11.6  Lambda表达式和集合   282
13.12  习题   284
13.13  本章要点   285

第 II 部分  Windows编程
第14章  基本桌面编程   289
14.1  XAML   290
14.1.1  关注点分离   290
14.1.2  XAML基础知识   290
14.2  动手实践   292
14.2.1  WPF控件   293
14.2.2  属性   294
14.2.3  事件   296
14.3  控件布局   300
14.3.1  基本布局概念   300
14.3.2  布局面板   301
14.4  游戏客户端   308
14.4.1  About窗口   308
14.4.2  Options窗口   312
14.4.3  数据绑定   318
14.4.4  使用ListBox控件启动游戏   321
14.5  习题   324
14.6  本章要点   325
第15章  高级桌面编程   327
15.1  创建控件并设置样式   327
15.1.1  样式   328
15.1.2  模板   328
15.1.3  触发器   329
15.1.4  动画   330
15.2  WPF用户控件   331
15.3  主窗口   340
15.3.1  菜单控件   340
15.3.2  路由命令和菜单   341
15.4  把所有内容结合起来   344
15.4.1  重构域模型   344
15.4.2  视图模型   349
15.4.3  大功告成   354
15.5  习题   360
15.6  本章要点   361

第 III 部分  云和跨平台编程
第16章  基本的云编程   365
16.1  云、云计算和云优化堆栈   366
16.2  云模式和最佳实践   368
16.3  使用Microsoft Azure C#库创建
存储容器   369
16.4  创建使用存储容器的ASP.NET 4.7
网站   376
16.5  习题   382
16.6  本章要点   382
第17章  高级云编程和部署   383
17.1  创建ASP.NET Web API   383
17.2  在Microsoft Azure上部署和
使用ASP.NET Web API   387
17.3  缩放Microsoft Azure平台上的
ASP.NET Web API   392
17.4  习题   395
17.5  本章要点   395
第18章  .NET Standard与.NET Core   397
18.1  跨平台基础知识以及必知的
关键术语   398
18.2  .NET Standard的含义和作用   399
18.3  引用和目标框架   402
18.4  .NET Core的含义   403
18.4.1  跨平台   404
18.4.2  开源   405
18.4.3  针对云进行优化   405
18.4.4  性能   406
18.4.5  模块化设计   406
18.4.6  独立的部署模型   408
18.5  生成和打包.NET Standard库   409
18.6  使用Visual Studio生成.NET Core
应用程序   413
18.7  从.NET Framework移植到.NET Core   415
18.7.1  识别第三方依赖   415
18.7.2  理解哪些功能不可用   415
18.7.3  升级当前的.NET Framework目标   416
18.7.4  为程序选择目标平台   416
18.8  本章要点   416
第19章  ASP.NET与ASP.NET Core   417
19.1  Web应用程序概述   418
19.2  选择合适的ASP.NET   418
19.2.1  ASP.NET Web Forms   419
19.2.2  ASP.NET MVC   420
19.2.3  ASP.NET Web API   422
19.2.4  ASP.NET Core   422
19.2.5  ASP.NET Web Site与ASP.NET Web 
Application Project类型的对比   423
19.3  使用ASP.NET Web Forms   424
19.3.1  服务器控件   425
19.3.2  输入验证   425
19.3.3  状态管理   426
19.3.4  身份验证与授权   426
19.4  创建ASP.NET Core Web应用程序   430
19.4.1  IIS和Kestrel   431
19.4.2  Razor语法   431
19.4.3  输入验证   432
19.4.4  状态管理   432
19.4.5  身份验证与授权   433
19.4.6  依赖注入   433
19.5  本章要点   437

第 IV 部分  数 据 访 问
第20章  文件   441
20.1  用于输入和输出的类   441
20.1.1  File类和Directory类   442
20.1.2  FileInfo类   443
20.1.3  DirectoryInfo类   444
20.1.4  路径名和相对路径   444
20.2  流   445
20.2.1  使用流的类   445
20.2.2  FileStream对象   445
20.2.3  StreamWriter对象   450
20.2.4  StreamReader对象   452
20.2.5  异步文件访问   454
20.2.6  读写压缩文件   454
20.3  监控文件系统   456
20.4  习题   460
20.5  本章要点   460
第21章  XML和JSON   461
21.1  XML基础   461
21.2  JSON 基础   462
21.3  XML模式   462
21.4  XML文档对象模型   464
21.4.1  XmlDocument类   464
21.4.2  XmlElement类   465
21.4.3  修改节点的值   468
21.5  把XML转换为JSON   471
21.6  用XPath搜索XML   473
21.7  习题   475
21.8  本章要点   476
第22章  LINQ   477
22.1  LINQ to XML   478
22.1.1  LINQ to XML函数构造方式   478
22.1.2  处理XML片段   480
22.2  LINQ提供程序   482
22.3  LINQ查询语法   482
22.3.1  用var关键字声明结果变量   483
22.3.2  指定数据源:from子句   484
22.3.3  指定条件:where子句   484
22.3.4  选择元素:select子句   484
22.3.5  完成:使用foreach循环   484
22.3.6  延迟执行的查询   484
22.4  LINQ方法语法   485
22.4.1  LINQ扩展方法   485
22.4.2  查询语法和方法语法   485
22.4.3  Lambda 表达式   485
22.5  排序查询结果   487
22.6  orderby子句   488
22.7  查询大型数据集   488
22.8  使用聚合运算符   490
22.9  单值选择查询   492
22.10  多级排序   494
22.11  分组查询   495
22.12  join查询   497
22.13  习题   498
22.14  本章要点   498
第23章  数据库   499
23.1  使用数据库   499
23.2  安装SQL Server Express   500
23.3  Entity Framework   500
23.4  Code First 数据库   500
23.5  数据库的位置   506
23.6  导航数据库关系   507
23.7  处理迁移   512
23.8  在已有的数据库中创建和查询XML   513
23.9  习题   517
23.10  本章要点   517

第 V 部分  其 他 技 术
第24章  Windows Communication Foundation   521
24.1  WCF的含义   522
24.2  WCF概念   522
24.2.1  WCF通信协议   522
24.2.2  地址、端点和绑定   523
24.2.3  协定   524
24.2.4  消息模式   524
24.2.5  行为   525
24.2.6  驻留   525
24.3  WCF编程   525
24.3.1  WCF测试客户端程序   529
24.3.2  定义WCF服务协定   531
24.3.3  自驻留的WCF服务   536
24.4  习题   540
24.5  本章要点   541
第25章  通用应用程序   543
25.1  准备工作   543
25.2  Windows通用应用程序   544
25.3  应用程序概念和设计   545
25.3.1  屏幕方向   545
25.3.2  菜单和工具栏   545
25.3.3  磁贴和徽章   545
25.3.4  应用程序的生存期   546
25.3.5  锁屏应用程序   546
25.4  应用程序的开发   546
25.4.1  自适应显示   546
25.4.2  沙箱应用程序   552
25.4.3  在页面之间导航   555
25.4.4  CommandBar控件   556
25.4.5  管理状态   558
25.5  Windows Store应用程序的常见元素   559
25.6  Windows Store   560
25.6.1  打包应用程序   560
25.6.2  创建包   561
25.7  习题   561
25.8  本章要点   561
附录A  习题答案   563

C#高级编程(第11版) C# 7 & .NET Core 2.0

目 录

第 I 部分 C# 语 言
第1 章 .NET 应用程序和工具   3
1.1 选择技术   3
1.2 回顾.NET 历史   4
1.2.1 C# 1.0——一种新语言  4
1.2.2 带有泛型的C# 2 和.NET 2  6
1.2.3 .NET 3.0——Windows Presentation Foundation   6
1.2.4 C# 3 和.NET 3.5——LINQ   6
1.2.5 C# 4 和.NET 4.0——dynamic 和TPL   7
1.2.6 C# 5 和异步编程   7
1.2.7 C# 6 和.NET Core 1.0   8
1.2.8 C# 7 和.NET Core 2.0    8
1.2.9 选择技术,继续前进    9
1.3 .NET 术语    10
1.3.1 .NET Framework      11
1.3.2 .NET Core      11
1.3.3 .NET Standard    11
1.3.4 NuGet 包   12
1.3.5 名称空间   12
1.3.6 公共语言运行库   13
1.3.7 Windows 运行库   13
1.4 用.NET Core CLI 编译  14
1.4.1 设置环境   14
1.4.2 创建应用程序   15
1.4.3 构建应用程序   16
1.4.4 运行应用程序   16
1.4.5 创建Web 应用程序   17
1.4.6 发布应用程序   17
1.5 使用Visual Studio 2017   19
1.6 应用程序类型和技术   24
1.6.1 数据访问   24
1.6.2 Windows 应用程序   24
1.6.3 Xamarin    24
1.6.4 Web 应用程序    25
1.6.5 Web API     25
1.6.6 WebHooks 和SignalR   25
1.6.7 Microsoft Azure     25
1.7 开发工具    26
1.7.1 Visual Studio Community   27
1.7.2 Visual Studio Professional   27
1.7.3 Visual Studio Enterprise   27
1.7.4 Visual Studio for Mac   27
1.7.5 Visual Studio Code   27
1.8 小结    27
第2 章 核心C#   29
2.1 C#基础     29
2.2 变量    31
2.2.1 初始化变量    31
2.2.2 类型推断    32
2.2.3 变量的作用域    33
2.2.4 常量    34
2.3 预定义数据类型     35
2.3.1 值类型和引用类型    35
2.3.2 .NET 类型     36
2.3.3 预定义的值类型    36
2.3.4 预定义的引用类型   40
2.4 程序流控制    42
2.4.1 条件语句    42
2.4.2 循环    44
2.4.3 跳转语句    47
2.5 名称空间    47
2.5.1 using 语句    48
2.5.2 名称空间的别名    49
2.6 Main()方法    49
2.7 使用注释    50
2.7.1 源文件中的内部注释   50
2.7.2 XML 文档     51
2.8 C#预处理器指令    52
2.8.1 #define 和#undef    52
2.8.2 #if、#elif、#else 和#endif    52
2.8.3 #warning 和 # error    53
2.8.4 #region 和#endregion   53
2.8.5 #line     53
2.8.6 #pragma     54
2.9 C#编程准则    54
2.9.1 关于标识符的规则    54
2.9.2 用法约定    55
2.10 小结       58
第3 章 对象和类型   59
3.1 创建及使用类     60
3.2 类和结构    60
3.3 类    61
3.3.1 字段    61
3.3.2 只读字段    61
3.3.3 属性    62
3.3.4 匿名类型    65
3.3.5 方法    66
3.3.6 构造函数    69
3.4 结构    73
3.4.1 结构是值类型     74
3.4.2 只读结构    75
3.4.3 结构和继承    75
3.4.4 结构的构造函数    75
3.4.5 ref 结构     76
3.5 按值和按引用传递参数   76
3.5.1 ref 参数     77
3.5.2 out 参数    77
3.5.3 in 参数    78
3.6 可空类型    79
3.7 枚举类型    79
3.8 部分类     81
3.9 扩展方法    83
3.10 Object 类    83
3.11 小结    84
第4 章 继承   85
4.1 面向对象    85
4.2 继承的类型    85
4.2.1 多重继承    86
4.2.2 结构和类    86
4.3 实现继承    86
4.3.1 虚方法    87
4.3.2 多态性    88
4.3.3 隐藏方法    89
4.3.4 调用方法的基类版本    90
4.3.5 抽象类和抽象方法   90
4.3.6 密封类和密封方法   91
4.3.7 派生类的构造函数   91
4.4 修饰符      93
4.4.1 访问修饰符     93
4.4.2 其他修饰符     94
4.5 接口    94
4.5.1 定义和实现接口     95
4.5.2 派生的接口     97
4.6 is 和as 运算符    98
4.7 小结    99
第5 章 泛型    100
5.1 泛型概述     100
5.1.1 性能    101
5.1.2 类型安全    102
5.1.3 二进制代码的重用    102
5.1.4 代码的扩展    102
5.1.5 命名约定    102
5.2 创建泛型类    103
5.3 泛型类的功能    105
5.3.1 默认值    106
5.3.2 约束    106
5.3.3 继承    108
5.3.4 静态成员    108
5.4 泛型接口     109
5.4.1 协变和抗变    109
5.4.2 泛型接口的协变   110
5.4.3 泛型接口的抗变   111
5.5 泛型结构   111
5.6 泛型方法   113
5.6.1 泛型方法示例   113
5.6.2 带约束的泛型方法    114
5.6.3 带委托的泛型方法    115
5.6.4 泛型方法规范       115
5.7 小结    116
第6 章 运算符和类型强制转换   117
6.1 运算符和类型转换    117
6.2 运算符   118
6.2.1 运算符的简化操作      119
6.2.2 运算符的优先级和关联性     125
6.3 使用二进制运算符        126
6.3.1 位的移动            128
6.3.2 有符号数和无符号数    128
6.4 类型的安全性       129
6.4.1 类型转换           130
6.4.2 装箱和拆箱         132
6.5 比较对象的相等性    133
6.5.1 比较引用类型的相等性   133
6.5.2 比较值类型的相等性     134
6.6 运算符重载        135
6.6.1 运算符的工作方式       135
6.6.2 运算符重载的示例:Vector 结构     136
6.6.3 比较运算符的重载       139
6.6.4 可以重载的运算符       140
6.7 实现自定义的索引运算符     141
6.8 用户定义的类型强制转换     142
6.8.1 实现用户定义的类型强制转换     143
6.8.2 多重类型强制转换       147
6.9 小结       150
第7 章 数组     151
7.1 相同类型的多个对象    151
7.2 简单数组   152
7.2.1 数组的声明   152
7.2.2 数组的初始化   152
7.2.3 访问数组元素   153
7.2.4 使用引用类型   153
7.3 多维数组   154
7.4 锯齿数组   155
7.5 Array 类   156
7.5.1 创建数组   156
7.5.2 复制数组   156
7.5.3 排序      157
7.6 数组作为参数   159
7.7 数组协变   159
7.8 枚举   160
7.8.1 IEnumerator 接口     160
7.8.2 foreach 语句     160
7.8.3 yield 语句   161
7.9 结构比较   164
7.10 Span      165
7.10.1 创建切片   166
7.10.2 使用Span 改变值    166
7.10.3 只读的Span    167
7.11 数组池     167
7.11.1 创建数组池     168
7.11.2 从池中租用内存    168
7.11.3 将内存返回给池    168
7.12 小结       169
第8 章 委托、lambda 表达式和事件    170
8.1 引用方法        170
8.2 委托    170
8.2.1 声明委托    171
8.2.2 使用委托    172
8.2.3 简单的委托示例    174
8.2.4 Action和Func委托     175
8.2.5 BubbleSorter 示例      176
8.2.6 多播委托    177
8.2.7 匿名方法    180
8.3 lambda 表达式    181
8.3.1 参数      181
8.3.2 多行代码    181
8.3.3 闭包     182
8.4 事件     182
8.4.1 事件发布程序    182
8.4.2 事件侦听器    184
8.5 小结    185
第9 章 字符串和正则表达式 186
9.1 System.String 类    187
9.1.1 构建字符串    188
9.1.2 StringBuilder 成员   190
9.2 字符串格式       190
9.2.1 字符串插值        191
9.2.2 日期时间和数字的格式    192
9.2.3 自定义字符串格式     193
9.3 正则表达式      194
9.3.1 正则表达式概述    194
9.3.2 RegularExpressionsPlayground 示例    195
9.3.3 显示结果    197
9.3.4 匹配、组和捕获    198
9.4 字符串和Span    200
9.5 小结    201
第10 章 集合     202
10.1 概述     202
10.2 集合接口和类型    203
10.3 列表     203
10.3.1 创建列表    204
10.3.2 只读集合    210
10.4 队列     210
10.5 栈    213
10.6 链表     214
10.7 有序列表    217
10.8 字典     219
10.8.1 字典初始化器   219
10.8.2 键的类型    219
10.8.3 字典示例    220
10.8.4 Lookup 类    223
10.8.5 有序字典    223
10.9 集    224
10.10 性能    225
10.11 小结    227
第11 章 特殊的集合   228
11.1 概述     228
11.2 处理位    228
11.2.1 BitArray 类    229
11.2.2 BitVector32 结构   230
11.3 可观察的集合     232
11.4 不变的集合     233
11.4.1 使用构建器和不变的集合    235
11.4.2 不变集合类型和接口      235
11.4.3 使用LINQ 和不变的数组   236
11.5 并发集合    236
11.5.1 创建管道    237
11.5.2 使用BlockingCollection   239
11.5.3 使用ConcurrentDictionary   240
11.5.4 完成管道    241
11.6 小结     242
第12 章 LINQ   243
12.1 LINQ 概述    243
12.1.1 列表和实体    244
12.1.2 LINQ 查询    246
12.1.3 扩展方法    246
12.1.4 推迟查询的执行    248
12.2 标准的查询操作符 249
12.2.1 筛选    250
12.2.2 用索引筛选    251
12.2.3 类型筛选    252
12.2.4 复合的from 子句   252
12.2.5 排序    253
12.2.6 分组    254
12.2.7 LINQ 查询中的变量     255
12.2.8 对嵌套的对象分组      255
12.2.9 内连接      256
12.2.10 左外连接     258
12.2.11 组连接      260
12.2.12 集合操作     262
12.2.13 合并     263
12.2.14 分区     264
12.2.15 聚合操作符    264
12.2.16 转换操作符    266
12.2.17 生成操作符    267
12.3 并行LINQ     267
12.3.1 并行查询    268
12.3.2 分区器    268
12.3.3 取消    269
12.4 表达式树    269
12.5 LINQ 提供程序     271
12.6 小结     272
第13 章 C#函数式编程   273
13.1 概述     273
13.1.1 避免状态突变     274
13.1.2 函数作为第一个类     275
13.2 表达式体的成员    275
13.3 扩展方法    276
13.4 using static 声明     277
13.5 本地函数    278
13.5.1 本地函数与yield 语句    279
13.5.2 递归本地函数     281
13.6 元组      282
13.6.1 元组的声明和初始化    282
13.6.2 元组解构    283
13.6.3 元组的返回    283
13.6.4 幕后的原理    284
13.6.5 ValueTuple 与元组的兼容性    285
13.6.6 推断出元组名称     285
13.6.7 元组与链表    286
13.6.8 元组和LINQ    286
13.6.9 解构    287
13.6.10 解构与扩展方法    288
13.7 模式匹配        288
13.7.1 模式匹配与is 运算符    288
13.7.2 模式匹配与switch 语句   290
13.7.3 模式匹配与泛型      291
13.8 小结    291
第14 章 错误和异常     292
14.1 简介    292
14.2 异常类   293
14.3 捕获异常   294
14.3.1 异常和性能   296
14.3.2 实现多个catch 块    296
14.3.3 在其他代码中捕获异常    299
14.3.4 System.Exception 属性    299
14.3.5 异常过滤器        299
14.3.6 重新抛出异常       300
14.3.7 没有处理异常时发生的情况     303
14.4 用户定义的异常类     303
14.4.1 捕获用户定义的异常      304
14.4.2 抛出用户定义的异常      305
14.4.3 定义用户定义的异常类    307
14.5 调用者信息        309
14.6 小结    310
第15 章 异步编程      311
15.1 异步编程的重要性   311
15.2 异步编程的.NET 历史    312
15.2.1 同步调用      312
15.2.2 异步模式      313
15.2.3 基于事件的异步模式     314
15.2.4 基于任务的异步模式     314
15.2.5 异步Main()方法     315
15.3 异步编程的基础   315
15.3.1 创建任务   316
15.3.2 调用异步方法     316
15.3.3 使用Awaiter      317
15.3.4 延续任务   317
15.3.5 同步上下文   318
15.3.6 使用多个异步方法    318
15.3.7 使用ValueTasks     319
15.3.8 转换异步模式      320
15.4 错误处理       320
15.4.1 异步方法的异常处理     321
15.4.2 多个异步方法的异常处理    321
15.4.3 使用AggregateException 信息   322
15.5 异步与Windows 应用程序   322
15.5.1 配置await     323
15.5.2 切换到UI 线程     324
15.5.3 使用IAsyncOperation   325
15.5.4 避免阻塞情况      325
15.6 小结       325