万本电子书0元读

万本电子书0元读

顶部广告

C# 8.0核心技术指南(原书第8版)电子书

这本畅销书籍将回答你在C# 8.0或.NET Core学习和发中遇到的各种问题。C#语言拥有惊人的灵活性和生命力,它的持续发展也促使我们紧随其步伐不断学习。 本书围绕概念和用例行组织,不但为中高级程序员提供了简明的C#和.NET知识体系,还行了一系列深度探索。 ★从语法和变量到指针、闭包与模式等高级主题紧跟C#的化速度。 ★专门使用三章对LINQ行深度解析。 ★探索并发和异步编程、高级多线程编程以及并行编程知识。

售       价:¥

纸质售价:¥195.30购买纸书

78人正在读 | 0人评论 6.7

作       者:(美)约瑟夫·阿坝哈瑞(Joseph Albahari),(美)埃里克·约翰森(Eric Johannsen)

出  版  社:机械工业出版社

出版时间:2021-05-01

字       数:52.1万

所属分类: 科技 > 计算机/网络 > 软件系统

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书全方位地介绍了 C# 的语言特性。在内容上,它兼顾了各种类型的读者。对于初学者,本书不论是介绍基本的语法,还是介绍高级的语言特性,都采用了讲解和示例结合的方法。而对于经验丰富的读者,本书的每一章都详尽而系统,是 的案头参考书。 本书在前一版的基础上行了大量的修订工作。不但将既有的内容和范例全部迁移到 .NET Core 之上,对 C# 8.0 与 .NET Core 3.x 提供的新特性行了详细的介绍,还在部分示例中专门对编写跨平台运行的程序的技巧或陷阱行了说明。可以说,本书从内容上涵盖了目前 C# 与 .NET Core 全新正式发行版的内容。<br/>【推荐语】<br/>这本畅销书籍将回答你在 C# 8.0 或 .NET Core 学习和发中遇到的各种问题。C#语言拥有惊人的灵活性和生命力,它的持续发展也促使我们紧随其步伐不断学习。 本书围绕概念和用例行组织,不但为中高级程序员提供了简明的 C# 和 .NET 知识体系,还行了一系列深度探索。 从语法和变量到指针、闭包与模式等高级主题紧跟 C# 的化速度。 专门使用三章对 LINQ 行深度解析。 探索并发和异步编程、高级多线程编程以及并行编程知识。 全面介绍 .NET 功能,包括正则表达式、网络编程、序列化、Span、反射以及加密功能。 详细介绍 Roslyn——模块化的 C# 编译器服务。<br/>
目录展开

O’Reilly Media, Inc.介绍

译者序

前言

第1章 C#和.NET Core简介

1.1 面向对象

1.2 类型安全性

1.3 内存管理

1.4 平台支持

1.5 C#和公共语言运行时

1.6 框架与基础类库

1.7 遗留框架和小众框架

1.8 Windows Runtime

1.9 C#简史

1.9.1 C# 8.0新特性

1.9.2 C# 7.x新特性

1.9.3 C# 6.0新特性

1.9.4 C# 5.0新特性

1.9.5 C# 4.0新特性

1.9.6 C# 3.0新特性

1.9.7 C# 2.0新特性

第2章 C#语言基础

2.1 第一个C#程序

编译

2.2 语法

2.2.1 标识符和关键字

2.2.2 字面量、标点与运算符

2.2.3 注释

2.3 类型基础

2.3.1 预定义类型示例

2.3.2 自定义类型示例

2.3.3 转换

2.3.4 值类型与引用类型

2.3.5 预定义类型分类

2.4 数值类型

2.4.1 数值字面量

2.4.2 数值转换

2.4.3 算术运算符

2.4.4 自增和自减运算符

2.4.5 特殊整数类型运算

2.4.6 8位和16位整数类型

2.4.7 特殊的float和double值

2.4.8 double和decimal的对比

2.4.9 实数的舍入误差

2.5 布尔类型和运算符

2.5.1 布尔类型转换

2.5.2 相等和比较运算符

2.5.3 条件运算符

2.6 字符串和字符

2.6.1 char转换

2.6.2 字符串类型

2.7 数组

2.7.1 默认数组元素初始化

2.7.2 索引和范围(C# 8)

2.7.3 多维数组

2.7.4 简化数组初始化表达式

2.7.5 边界检查

2.8 变量和参数

2.8.1 栈和堆

2.8.2 明确赋值

2.8.3 默认值

2.8.4 参数

2.8.5 引用局部变量

2.8.6 引用返回值

2.8.7 var:隐式类型局部变量

2.9 表达式和运算符

2.9.1 基础表达式

2.9.2 空表达式

2.9.3 赋值表达式

2.9.4 运算符优先级和结合性

2.9.5 运算符表

2.10 null运算符

2.10.1 null合并运算符

2.10.2 null合并赋值运算符(C# 8)

2.10.3 null条件运算符

2.11 语句

2.11.1 声明语句

2.11.2 表达式语句

2.11.3 选择语句

2.11.4 迭代语句

2.11.5 跳转语句

2.11.6 其他语句

2.12 命名空间

2.12.1 using指令

2.12.2 using static指令

2.12.3 命名空间中的规则

2.12.4 类型和命名空间别名

2.12.5 高级命名空间特性

第3章 在C#中创建类型

3.1 类

3.1.1 字段

3.1.2 常量

3.1.3 方法

3.1.4 实例构造器

3.1.5 对象初始化器

3.1.6 this引用

3.1.7 属性

3.1.8 索引器

3.1.9 静态构造器

3.1.10 静态类

3.1.11 终结器

3.1.12 分部类型和方法

3.1.13 nameof运算符

3.2 继承

3.2.1 多态

3.2.2 类型转换和引用转换

3.2.3 虚函数成员

3.2.4 抽象类和抽象成员

3.2.5 隐藏继承成员

3.2.6 密封函数和类

3.2.7 base关键字

3.2.8 构造器和继承

3.2.9 重载和解析

3.3 object类型

3.3.1 装箱和拆箱

3.3.2 静态和运行时类型检查

3.3.3 GetType方法和typeof运算符

3.3.4 ToString方法

3.3.5 object的成员列表

3.4 结构体

3.4.1 结构体的构造语义

3.4.2 只读结构体与只读函数

3.4.3 ref结构体

3.5 访问权限修饰符

3.5.1 示例

3.5.2 友元程序集

3.5.3 可访问性上限

3.5.4 访问权限修饰符的限制

3.6 接口

3.6.1 扩展接口

3.6.2 显式接口实现

3.6.3 实现接口的虚成员

3.6.4 在子类中重新实现接口

3.6.5 接口和装箱

3.6.6 默认接口成员(C# 8)

3.7 枚举类型

3.7.1 枚举类型转换

3.7.2 标志枚举类型

3.7.3 枚举运算符

3.7.4 类型安全问题

3.8 嵌套类型

3.9 泛型

3.9.1 泛型类型

3.9.2 为什么需要泛型

3.9.3 泛型方法

3.9.4 声明类型参数

3.9.5 typeof和未绑定泛型类型

3.9.6 泛型的默认值

3.9.7 泛型的约束

3.9.8 继承泛型类型

3.9.9 自引用泛型声明

3.9.10 静态数据

3.9.11 类型参数和转换

3.9.12 协变

3.9.13 逆变

3.9.14 C#泛型和C++模板的对比

第4章 C#的高级特性

4.1 委托

4.1.1 用委托编写插件方法

4.1.2 多播委托

4.1.3 实例方法目标和静态方法目标

4.1.4 泛型委托类型

4.1.5 Func和Action委托

4.1.6 委托和接口

4.1.7 委托的兼容性

4.2 事件

4.2.1 标准事件模式

4.2.2 事件访问器

4.2.3 事件修饰符

4.3 Lambda表达式

4.3.1 显式指定Lambda参数的类型

4.3.2 捕获外部变量

4.3.3 Lambda表达式和局部方法的对比

4.4 匿名方法

4.5 try语句和异常

4.5.1 catch子句

4.5.2 finally块

4.5.3 抛出异常

4.5.4 System.Exception的关键属性

4.5.5 常用的异常类型

4.5.6 TryXXX方法模式

4.5.7 异常的替代方式

4.6 枚举类型和迭代器

4.6.1 枚举类型

4.6.2 集合的初始化器

4.6.3 迭代器

4.6.4 迭代器语义

4.6.5 组合序列

4.7 可空值类型

4.7.1 Nullable<T>结构体

4.7.2 隐式和显式的可空值类型转换

4.7.3 装箱拆箱可空值

4.7.4 运算符优先级提升

4.7.5 在bool?上使用&和|运算符

4.7.6 可空值类型和null运算符

4.7.7 可空值类型的应用场景

4.7.8 可空值类型的替代方案

4.8 可空引用类型(C# 8)

4.8.1 null包容运算符

4.8.2 隔离注解与警告上下文

4.8.3 将可空相关的警告视为错误

4.9 扩展方法

4.9.1 扩展方法链

4.9.2 二义性与解析

4.10 匿名类型

4.11 元组

4.11.1 元组元素命名

4.11.2 ValueTuple.Create

4.11.3 元组的解构

4.11.4 元组的比较

4.11.5 System.Tuple类

4.12 模式

4.12.1 属性模式(C# 8)

4.12.2 元组模式(C# 8)

4.12.3 位置模式(C# 8)

4.12.4 var模式

4.12.5 常量模式

4.13 特性

4.13.1 特性类

4.13.2 命名特性参数和位置特性参数

4.13.3 程序集与支持字段的特性

4.13.4 指定多个特性

4.14 调用者信息特性

4.15 动态绑定

4.15.1 静态绑定与动态绑定

4.15.2 自定义绑定

4.15.3 语言绑定

4.15.4 RuntimeBinderException

4.15.5 动态类型的运行时表示

4.15.6 动态转换

4.15.7 var与dynamic

4.15.8 动态表达式

4.15.9 无动态接收者的动态调用

4.15.10 动态表达式中的静态类型

4.15.11 不可调用的函数

4.16 运算符重载

4.16.1 运算符函数

4.16.2 重载相等和比较运算符

4.16.3 自定义隐式和显式转换

4.16.4 重载true和false

4.17 不安全的代码和指针

4.17.1 指针基础

4.17.2 不安全的代码

4.17.3 fixed语句

4.17.4 指针取成员运算符

4.17.5 stackalloc关键字

4.17.6 固定大小的缓冲区

4.17.7 void*

4.17.8 指向非托管代码的指针

4.18 预处理指令

4.18.1 Conditional特性

4.18.2 pragma警告

4.19 XML文档

4.19.1 标准XML文档标签

4.19.2 用户定义标签

4.19.3 类型或成员交叉引用

第5章 框架概述

5.1 .NET Standard

5.1.1 .NET Standard 2.0

5.1.2 .NET Standard 2.1

5.1.3 旧版本.NET Standard

5.1.4 .NET Framework和.NET Core的兼容性

5.2 框架与C#语言版本的关系

5.3 参考程序集

5.4 CLR和BCL

5.4.1 系统类型

5.4.2 文本处理

5.4.3 集合

5.4.4 查询

5.4.5 XML和JSON

5.4.6 诊断

5.4.7 并发与异步

5.4.8 流与I/O

5.4.9 网络

5.4.10 序列化

5.4.11 程序集、反射和特性

5.4.12 动态编程

5.4.13 加密

5.4.14 高级线程功能

5.4.15 并行编程

5.4.16 Span<T>和Memory<T>

5.4.17 原生互操作性与COM互操作性

5.4.18 正则表达式

5.4.19 Roslyn编译器

5.5 应用程序框架

5.5.1 ASP.NET Core

5.5.2 Windows桌面

5.5.3 UWP

5.5.4 Xamarin

第6章 框架基础

6.1 字符串与文本处理

6.1.1 char

6.1.2 字符串

6.1.3 字符串的比较

6.1.4 StringBuilder

6.1.5 文本编码和Unicode

6.2 日期和时间

6.2.1 TimeSpan

6.2.2 DateTime和DateTimeOffset

6.3 日期和时区

6.3.1 DateTime与时区

6.3.2 DateTimeOffset与时区

6.3.3 TimeZone和TimeZoneInfo

6.3.4 夏令时与DateTime

6.4 格式化和解析

6.4.1 ToString和Parse

6.4.2 格式提供器

6.5 标准格式字符串与解析标记

6.5.1 数字格式字符串

6.5.2 NumberStyles

6.5.3 日期/时间格式字符串

6.5.4 DateTimeStyles

6.5.5 枚举格式字符串

6.6 其他转换机制

6.6.1 Convert类

6.6.2 XmlConvert

6.6.3 类型转换器

6.6.4 BitConverter

6.7 全球化

6.7.1 全球化检查清单

6.7.2 测试

6.8 操作数字

6.8.1 转换

6.8.2 Math

6.8.3 BigInteger

6.8.4 Complex

6.8.5 Random

6.9 枚举

6.9.1 枚举值转换

6.9.2 列举枚举值

6.9.3 枚举的工作方式

6.10 Guid结构体

6.11 相等比较

6.11.1 值相等和引用相等

6.11.2 标准相等比较协议

6.11.3 相等比较和自定义类型

6.12 顺序比较

6.12.1 IComparable

6.12.2 <和>

6.12.3 实现IComparable接口

6.13 实用类

6.13.1 Console类

6.13.2 Environment类

6.13.3 Process类

6.13.4 AppContext类

第7章 集合

7.1 枚举

7.1.1 IEnumerable和IEnumerator

7.1.2 IEnumerable<T>和IEnumerator<T>

7.1.3 实现枚举接口

7.2 ICollection和IList接口

7.2.1 ICollection<T>和ICollection

7.2.2 IList<T>和IList

7.2.3 IReadOnlyCollection<T>与IReadOnlyList<T>

7.3 Array类

7.3.1 创建和索引

7.3.2 枚举

7.3.3 长度和维数

7.3.4 搜索

7.3.5 排序

7.3.6 反转数组元素

7.3.7 复制数组

7.3.8 转换和调整大小

7.4 List、Queue、Stack和Set

7.4.1 List<T>和ArrayList

7.4.2 LinkedList<T>

7.4.3 Queue<T>和Queue

7.4.4 Stack<T>和Stack

7.4.5 BitArray

7.4.6 HashSet<T>和SortedSet<T>

7.5 字典

7.5.1 IDictionary<TKey, TValue>

7.5.2 IDictionary

7.5.3 Dictionary<TKey, TValue>和Hashtable

7.5.4 OrderedDictionary

7.5.5 ListDictionary和HybridDictionary

7.5.6 排序字典

7.6 自定义集合与代理

7.6.1 Collection<T>和CollectionBase

7.6.2 KeyedCollection<TKey, TItem>和DictionaryBase

7.6.3 ReadOnlyCollection<T>

7.7 不可变集合

7.7.1 创建不可变集合

7.7.2 使用不可变集合

7.7.3 不可变集合的构建器

7.7.4 不可变集合的性能

7.8 扩展相等比较和排序操作

7.8.1 IEqualityComparer和EqualityComparer

7.8.2 IComparer和Comparer

7.8.3 StringComparer

7.8.4 IStructuralEquatable和IStructuralComparable

第8章 LINQ查询

8.1 入门

8.2 流式语法

8.2.1 查询运算符链

8.2.2 使用Lambda表达式

8.2.3 原始顺序

8.2.4 其他运算符

8.3 查询表达式

8.3.1 范围变量

8.3.2 LINQ查询语法与SQL语法

8.3.3 查询语法与流式语法

8.3.4 混合查询语法

8.4 延迟执行

8.4.1 重复执行

8.4.2 捕获变量

8.4.3 延迟执行的工作原理

8.4.4 串联装饰器

8.4.5 查询语句的执行方式

8.5 子查询

子查询与延迟执行

8.6 构造方式

8.6.1 渐进式查询构造

8.6.2 into关键字

8.6.3 查询的包装

8.7 映射方式

8.7.1 对象初始化器

8.7.2 匿名类型

8.7.3 let关键字

8.8 解释型查询

8.8.1 解释型查询的工作机制

8.8.2 综合使用解释型查询和本地查询

8.8.3 AsEnumerable方法

8.9 EF Core

8.9.1 EF Core实体类

8.9.2 DbContext

8.9.3 对象跟踪

8.9.4 更改跟踪

8.9.5 导航属性

8.9.6 延迟执行

8.10 构建查询表达式

8.10.1 委托与表达式树

8.10.2 表达式树

第9章 LINQ运算符

9.1 概述

9.1.1 序列→序列

9.1.2 序列→元素或值

9.1.3 void→序列

9.2 筛选

9.2.1 Where

9.2.2 Take和Skip

9.2.3 TakeWhile和SkipWhile

9.2.4 Distinct

9.3 映射

9.3.1 Select

9.3.2 SelectMany

9.4 连接

9.4.1 Join和GroupJoin

9.4.2 Zip运算符

9.5 排序

OrderBy、OrderByDescending、ThenBy和ThenByDescending

9.6 分组

GroupBy

9.7 集合运算符

9.7.1 Concat和Union

9.7.2 Intersect和Except

9.8 转换方法

9.8.1 OfType和Cast

9.8.2 ToArray、ToList、ToDictionary、ToHashSet和ToLookup

9.8.3 AsEnumerable和AsQueryable

9.9 元素运算符

9.9.1 First、Last和Single

9.9.2 ElementAt

9.9.3 DefaultIfEmpty

9.10 聚合方法

9.10.1 Count和LongCount

9.10.2 Min和Max

9.10.3 Sum和Average

9.10.4 Aggregate

9.11 量词运算符

9.11.1 Contains和Any

9.11.2 All和SequenceEqual

9.12 生成序列的方法

9.12.1 Empty

9.12.2 Range和Repeat

第10章 LINQ to XML

10.1 架构概述

10.1.1 什么是DOM

10.1.2 LINQ to XML的DOM

10.2 X-DOM概述

10.2.1 加载和解析

10.2.2 保存和序列化

10.3 实例化X-DOM

10.3.1 函数式构建

10.3.2 指定内容

10.3.3 自动深度克隆

10.4 导航和查询

10.4.1 导航至子节点

10.4.2 导航至父节点

10.4.3 导航至同级节点

10.4.4 导航至节点的属性

10.5 更新X-DOM

10.5.1 简单的值更新

10.5.2 更新子节点和属性

10.5.3 通过父节点更新子节点

10.6 使用Value

10.6.1 设置Value

10.6.2 获得Value

10.6.3 Value与混合内容节点

10.6.4 自动连接XText节点

10.7 文档和声明

10.7.1 XDocument

10.7.2 XML声明

10.8 名称和命名空间

10.8.1 XML中的命名空间

10.8.2 在X-DOM中指定命名空间

10.8.3 X-DOM和默认命名空间

10.8.4 前缀

10.9 注解

10.10 将数据映射到X-DOM

10.10.1 排除空元素

10.10.2 流映射

第11章 其他XML与JSON技术

11.1 XmlReader

11.1.1 读取节点

11.1.2 读取元素

11.1.3 读取属性

11.1.4 命名空间和前缀

11.2 XmlWriter

11.2.1 写入属性

11.2.2 写入其他类型节点

11.2.3 命名空间和前缀

11.3 XmlReader/XmlWriter的使用模式

11.3.1 处理多层次结构数据

11.3.2 混合使用XmlReader/XmlWriter和X-DOM

11.4 处理JSON

11.4.1 Utf8JsonReader

11.4.2 Utf8JsonWriter

11.4.3 JsonDocument

第12章 对象销毁与垃圾回收

12.1 IDisposable接口、Dispose方法和Close方法

12.1.1 标准销毁语义

12.1.2 销毁对象的时机

12.1.3 在销毁时清理字段

12.1.4 匿名可销毁对象

12.2 自动垃圾回收

12.2.1 根

12.2.2 垃圾回收和WinRT

12.3 终结器

12.3.1 在终结器中调用Dispose

12.3.2 对象的复活

12.4 垃圾回收器的工作方式

12.4.1 优化技术

12.4.2 强制垃圾回收

12.4.3 垃圾回收过程的调整

12.4.4 内存压力

12.4.5 数组池

12.5 托管内存泄漏

12.5.1 定时器

12.5.2 诊断内存泄漏

12.6 弱引用

12.6.1 弱引用和缓存

12.6.2 弱引用和事件

第13章 诊断

13.1 条件编译

13.1.1 条件编译与静态变量标志

13.1.2 Conditional特性

13.2 Debug和Trace类

13.2.1 Fail和Assert方法

13.2.2 TraceListener类

13.2.3 刷新并关闭监听器

13.3 调试器的集成

13.3.1 附加和断点

13.3.2 Debugger特性

13.4 进程与线程处理

13.4.1 检查运行中的进程

13.4.2 在进程中检查线程

13.5 StackTrace和StackFrame类

13.6 Windows事件日志

13.6.1 写入事件日志

13.6.2 读取事件日志

13.6.3 监视事件日志

13.7 性能计数器

13.7.1 遍历可用的计数器

13.7.2 读取性能计数器的数据

13.7.3 创建计数器并写入性能数据

13.8 Stopwatch类

13.9 跨平台诊断工具

13.9.1 dotnet-counters

13.9.2 dotnet-trace

13.9.3 dotnet-dump

第14章 并发与异步

14.1 概述

14.2 线程

14.2.1 创建线程

14.2.2 汇合与休眠

14.2.3 阻塞

14.2.4 本地状态与共享状态

14.2.5 锁与线程安全

14.2.6 向线程传递数据

14.2.7 异常处理

14.2.8 前台线程与后台线程

14.2.9 线程的优先级

14.2.10 信号发送

14.2.11 富客户端应用程序的线程

14.2.12 同步上下文

14.2.13 线程池

14.3 任务

14.3.1 启动任务

14.3.2 返回值

14.3.3 异常

14.3.4 延续

14.3.5 TaskCompletionSource类

14.3.6 Task.Delay方法

14.4 异步原则

14.4.1同步操作与异步操作

14.4.2 什么是异步编程

14.4.3 异步编程与延续

14.4.4 语言支持的重要性

14.5 C#的异步函数

14.5.1 等待

14.5.2 编写异步函数

14.5.3 异步Lambda表达式

14.5.4 异步流(C# 8)

14.5.5 WinRT中的异步方法

14.5.6 异步与同步上下文

14.5.7 优化

14.6 异步模式

14.6.1 取消操作

14.6.2 进度报告

14.6.3 基于任务的异步模式

14.6.4 任务组合器

14.6.5 异步锁

14.7 旧有的异步编程模式

14.7.1 异步编程模型

14.7.2 基于事件的异步模式

14.7.3 BackgroundWorker类

第15章 流与I/O

15.1 流的架构

15.2 使用流

15.2.1 读和写

15.2.2 查找

15.2.3 关闭和刷新

15.2.4 超时

15.2.5 线程安全

15.2.6 后台存储流

15.2.7 FileStream类

15.2.8 MemoryStream类

15.2.9 PipeStream类

15.2.10 BufferedStream类

15.3 流适配器

15.3.1 文本适配器

15.3.2 二进制适配器

15.3.3 关闭和销毁流适配器

15.4 压缩流

15.4.1 内存数据压缩

15.4.2 UNIX下的gzip文件压缩

15.5 操作ZIP文件

15.6 文件与目录操作

15.6.1 File类

15.6.2 Directory类

15.6.3 FileInfo类和DirectoryInfo类

15.6.4 Path类

15.6.5 特殊文件夹

15.6.6 查询卷信息

15.6.7 捕获文件系统事件

15.7 在UWP中进行文件I/O操作

15.7.1 操作目录

15.7.2 操作文件

15.7.3 获取目录与文件

15.8 操作系统安全性

15.8.1 以标准用户账户运行

15.8.2 管理员权限提升及虚拟化

15.9 内存映射文件

15.9.1 内存映射文件和随机文件I/O

15.9.2 内存映射文件和共享内存(Windows操作系统)

15.9.3 跨平台的进程间内存共享

15.9.4 使用视图访问器

第16章 网络

16.1 .NET网络架构

16.2 地址与端口

16.3 URI

16.4 客户端类

16.4.1 WebClient类

16.4.2 WebRequest和WebResponse

16.4.3 HttpClient类

16.4.4 代理

16.4.5 身份验证

16.4.6 异常处理

16.5 使用HTTP

16.5.1 头部信息

16.5.2 查询字符串

16.5.3 上传表单数据

16.5.4 cookie

16.6 编写HTTP服务器

16.7 使用FTP

16.8 使用DNS

16.9 通过SmtpClient类发送邮件

16.10 使用TCP

并发TCP通信

16.11 使用TCP接收POP3邮件

16.12 在UWP中使用TCP

第17章 序列化

17.1 序列化的概念

17.1.1 序列化引擎

17.1.2 格式化器

17.1.3 显式和隐式序列化

17.2 XML序列化器

17.2.1 基于特性的序列化入门

17.2.2 子类和子对象

17.2.3 序列化集合

17.2.4 IXmlSerializable接口

17.3 JSON序列化器

17.3.1 入门

17.3.2 序列化子对象

17.3.3 序列化集合

17.3.4 使用特性控制序列化

17.3.5 自定义数据转换

17.3.6 JSON序列化选项

17.4 二进制序列化器

入门

17.5 二进制序列化特性

17.5.1 [NonSerialized]

17.5.2 [OnDeserializing]

17.5.3 [OnDeserialized]

17.5.4 [OnSerializing]和[OnSerialized]

17.5.5 [OptionalField]特性和版本控制

17.6 使用ISerializable接口进行二进制序列化

继承可序列化类

第18章 程序集

18.1 程序集的组成部分

18.1.1 程序集清单

18.1.2 应用程序清单(Windows)

18.1.3 模块

18.1.4 Assembly类

18.2 强名称和程序集签名

如何为程序集添加强名称

18.3 程序集名称

18.3.1 完全限定名称

18.3.2 AssemblyName类

18.3.3 程序集的信息版本和文件版本

18.4 认证代码签名

如何进行认证代码签名

18.5 资源和附属程序集

18.5.1 直接嵌入资源

18.5.2 .resources文件

18.5.3 .resx文件

18.5.4 附属程序集

18.5.5 文化和子文化

18.6 程序集的加载、解析与隔离

18.6.1 程序集加载上下文

18.6.2 默认ALC

18.6.3 获得“当前”的ALC

18.6.4 Assembly.Load与上下文相关的ALC

18.6.5 加载和解析非托管程序库

18.6.6 AssemblyDependencyResolver

18.6.7 卸载ALC

18.6.8 旧版本中的加载方法

18.6.9 编写插件系统

第19章 反射和元数据

19.1 反射和激活类型

19.1.1 获取类型

19.1.2 类型名称

19.1.3 基类型和接口

19.1.4 实例化类型

19.1.5 泛型类型

19.2 反射和调用成员

19.2.1 成员类型

19.2.2 C#成员与CLR成员

19.2.3 泛型类型成员

19.2.4 动态调用成员

19.2.5 方法的参数

19.2.6 使用委托提高性能

19.2.7 访问非公有成员

19.2.8 泛型方法

19.2.9 调用未知类型的泛型接口成员

19.3 反射程序集

模块

19.4 使用特性

19.4.1 特性基础

19.4.2 AttributeUsage特性

19.4.3 定义自定义的特性

19.4.4 在运行时检索特性

19.5 动态生成代码

19.5.1 使用DynamicMethod生成IL

19.5.2 评估栈

19.5.3 向动态方法传递参数

19.5.4 生成局部变量

19.5.5 分支

19.5.6 实例化对象和调用实例方法

19.5.7 异常处理

19.6 生成程序集和类型

Reflection.Emit对象模型

19.7 生成类型成员

19.7.1 生成方法

19.7.2 生成字段和属性

19.7.3 生成构造器

19.7.4 附加特性

19.8 生成泛型方法和泛型类型

19.8.1 定义泛型方法

19.8.2 定义泛型类型

19.9 复杂的生成目标

19.9.1 未创建的封闭式泛型

19.9.2 循环依赖

19.10 解析IL

编写反汇编器

第20章 动态编程

20.1 动态语言运行时

20.2 数值类型统一

20.3 动态成员重载解析

20.3.1 简化访问者模式

20.3.2 调用未知类型的泛型类型成员

20.4 实现动态对象

20.4.1 DynamicObject

20.4.2 ExpandoObject

20.5 与动态语言进行互操作

在C#和脚本之间传递状态

第21章 加密

21.1 概述

21.2 Windows数据保护

21.3 散列算法

21.3.1 .NET Core中的散列算法

21.3.2 对密码进行散列运算

21.4 对称加密

21.4.1 内存中加密

21.4.2 串联加密流

21.4.3 销毁加密对象

21.4.4 密钥管理

21.5 公钥加密和签名

21.5.1 RSA类

21.5.2 数字签名

第22章 高级线程处理

22.1 同步概述

22.2 排他锁

22.2.1 lock语句

22.2.2 Monitor.Enter方法和Monitor.Exit方法

22.2.3 选择同步对象

22.2.4 使用锁的时机

22.2.5 锁与原子性

22.2.6 嵌套锁

22.2.7 死锁

22.2.8 性能

22.2.9 Mutex

22.3 锁和线程安全性

22.3.1 线程安全性和.NET Core类型

22.3.2 应用服务器的线程安全性

22.3.3 不可变对象

22.4 非排他锁

22.4.1 信号量

22.4.2 读写锁

22.5 使用事件等待句柄发送信号

22.5.1 AutoResetEvent

22.5.2 ManualResetEvent

22.5.3 CountdownEvent

22.5.4 创建跨进程的EventWaitHandle

22.5.5 等待句柄和延续操作

22.5.6 WaitAny、WaitAll和SignalAndWait

22.6 Barrier类

22.7 延迟初始化

22.7.1 Lazy<T>类

22.7.2 LazyInitializer类

22.8 线程本地存储

22.8.1 [ThreadStatic]特性

22.8.2 ThreadLocal<T>类

22.8.3 GetData方法和SetData方法

22.8.4 AsyncLocal<T>类

22.9 定时器

22.9.1 多线程定时器

22.9.2 单线程定时器

第23章 并行编程

23.1 选择PFX的原因

23.1.1 PFX的概念

23.1.2 PFX组件

23.1.3 使用PFX的场合

23.2 PLINQ

23.2.1 并行执行的特性

23.2.2 PLINQ与顺序

23.2.3 PLINQ的限制

23.2.4 示例:并行拼写检查器

23.2.5 纯函数

23.2.6 设置并行级别

23.2.7 取消操作

23.2.8 PLINQ优化

23.3 Parallel类

23.3.1 Parallel.Invoke方法

23.3.2 Parallel.For方法和Parallel.ForEach方法

23.4 任务并行

23.4.1 创建并启动任务

23.4.2 等待多个任务

23.4.3 取消任务

23.4.4 延续任务

23.4.5 任务调度器

23.4.6 TaskFactory类

23.5 处理AggregateException

Flatten和Handle方法

23.6 并发集合

23.6.1 IProducerConsumerCollection<T>接口

23.6.2 ConcurrentBag<T>类

23.7 BlockingCollection<T>类

编写生产者/消费者队列

第24章 Span<T>和Memory<T>

24.1 Span和切片

24.1.1 CopyTo和TryCopyTo方法

24.1.2 操作文本

24.2 Memory<T>类

24.3 前向枚举器

24.4 操作栈分配内存和非托管内存

第25章 原生程序和COM组件互操作性

25.1 调用原生DLL

25.2 类型的封送

25.2.1 常见类型的封送

25.2.2 类和结构体的封送

25.2.3 in和out参数封送

25.3 非托管代码中的回调函数

25.4 模拟C共用体

25.5 共享内存

25.6 将结构体映射到非托管内存

fixed和fixed{...}

25.7 COM互操作性

25.7.1 COM的目的

25.7.2 COM类型系统基础

25.8 在C#中调用COM组件

25.8.1 可选参数和命名参数

25.8.2 隐式ref参数

25.8.3 索引器

25.8.4 动态绑定

25.9 内嵌互操作类型

类型等价

25.10 在COM中访问C#对象

创建无须注册的COM组件

第26章 正则表达式

26.1 正则表达式基础

26.1.1 编译正则表达式

26.1.2 RegexOptions

26.1.3 字符转义

26.1.4 字符集合

26.2 量词符号

贪婪量词符号与懒惰量词符号

26.3 零宽度断言

26.3.1 前向条件和后向条件

26.3.2 锚点

26.3.3 单词边界

26.4 分组

命名分组

26.5 替换并分割文本

26.5.1 MatchEvaluator委托

26.5.2 分割文本

26.6 正则表达式实例

26.7 正则表达式语言参考

第27章 Roslyn编译器

27.1 Roslyn架构

27.1.1 工作区

27.1.2 脚本功能

27.2 语法树

27.2.1 语法树的结构

27.2.2 获取语法树

27.2.3 语法树的遍历和搜索

27.2.4 非关键信息

27.2.5 语法树的转换

27.3 编译过程和语义模型

27.3.1 创建编译过程

27.3.2 生成程序集

27.3.3 查询语义模型

27.3.4 示例:修改符号名称

作者介绍

封面介绍

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部