C#高级编程 第11版 C# 7 &NET Core 20NET Core 程序设计基础教程 c语pdf下载pdf下载

C#高级编程 第11版 C# 7 &NET Core 20NET Core 程序设计基础教程 c语百度网盘pdf下载

作者:
简介:本篇主要提供 C#高级编程 第11版 C# 7 &NET Core 20NET Core 程序设计基础教程 c语pdf下载
出版社:
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍


目录

第 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

第16 章 反射、元数据和动态编程    326

16.1 在运行期间检查代码和动态编程   326

16.2 自定义特性       327

16.2.1 编写自定义特性     327

16.2.2 自定义特性示例:WhatsNewAttributes   330

16.3 反射     331

16.3.1 System.Type 类    332

16.3.2 TypeView 示例    333

16.3.3 Assembly 类      335

16.3.4 完成WhatsNewAttributes 示例    336

16.4 为反射使用动态语言扩展     339

16.4.1 创建Calculator 库    339

16.4.2 动态实例化类型     339

16.4.3 用Reflection API 调用成员    340

16.4.4 使用动态类型调用成员    340

16.5 dynamic 类型    341

16.6 DynamicObject 和ExpandoObject概述    344

16.6.1 DynamicObject   344

16.6.2 ExpandoObject    345

16.7 小结     347

第17 章 托管和非托管内存   348

17.1 内存     348

17.2 后台内存管理     349

17.2.1 值数据类型    349

17.2.2 引用数据类型   350

17.2.3 垃圾收集       352

17.3 强引用和弱引用    354

17.4 处理非托管的资源  354

17.4.1 析构函数或终结器     355

17.4.2 IDisposable 接口     356

17.4.3 using 语句        356

17.4.4 实现IDisposable 接口和析构函数    357

17.4.5 IDisposable 和终结器的规则     358

17.5 不安全的代码      358

17.5.1 用指针直接访问内存    358

17.5.2 指针示例:PointerPlayground   364

17.5.3 使用指针优化性能      367

17.6 引用的语义     369

17.6.1 传递ref 和返回ref    371

17.6.2 ref 和数组     371

17.7 Span     373

17.7.1 Span 引用托管堆   373

17.7.2 Span 引用栈       373

17.7.3 Span 引用本机堆    374

17.7.4 Span 扩展方法      374

17.8 平台调用      375

17.9 小结        378

第18 章 Visual Studio 2017     379

18.1 使用Visual Studio 2017     379

18.1.1 Visual Studio 的版本       382

18.1.2 Visual Studio 设置        382

18.2 创建项目             383

18.2.1 面向多个版本的.NET     384

18.2.2 选择项目类型         385

18.3 浏览并编写项目      388

18.3.1 Solution Explorer     388

18.3.2 使用代码编辑器     394

18.3.3 学习和理解其他窗口   399

18.3.4 排列窗口      402

18.4 构建项目     402

18.4.1 构建、编译和生成代码    403

18.4.2 调试版本和发布版本     403

18.4.3 选择配置     404

18.4.4 编辑配置     404

18.5 调试代码     406

18.5.1 设置断点     407

18.5.2 使用数据提示和调试器可视化工具    407

18.5.3 Live Visual Tree     408

18.5.4 监视和修改变量     409

18.5.5 异常      409

18.5.6 多线程    410

18.6 重构工具    411

18.7 诊断工具    412

.......