计算机
类型
可以朗读
语音朗读
941千字
字数
2021-06-01
发行日期
展开全部
主编推荐语
本书全方位地介绍了C#的语言特性。
内容简介
在内容上,它兼顾了各种类型的读者。对于初学者,本书不论是介绍基本的语法,还是介绍高级的语言特性,都采用了讲解和示例结合的方法。而对于经验丰富的读者,本书的每一章都详尽而系统,是必备的案头参考书。
本书在前一版的基础上进行了大量的修订工作。不但将既有的内容和范例全部迁移到.NETCore之上,对C#8.0与.NETCore3.x提供的新特性进行了详细的介绍,还在部分示例中专门对编写跨平台运行的程序的技巧或陷阱进行了说明。
可以说,本书从内容上涵盖了目前C#与.NETCore全新正式发行版的内容。
目录
- 版权信息
- 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 示例:修改符号名称
- 作者介绍
- 封面介绍
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。