C#7.0核心技术指南语言-程序设计-指南O’Reilly精品系列书pdf下载pdf下载

C#7.0核心技术指南语言-程序设计-指南O’Reilly精品系列书百度网盘pdf下载

作者:
简介:本篇主要提供C#7.0核心技术指南语言-程序设计-指南O’Reilly精品系列书pdf下载
出版社:义博图书专营店
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

9787111631347


前言1第1章 C#和.NET Framework简介71.1 面向对象71.2 类型安全性81.3 内存管理91.4 平台支持91.5 C#和CLR91.6 CLR和.NET Framework101.7 其他框架111.7.1遗留框架和小众框架121.7.2 Windows Runtime121.8 C#简史131.8.1 C# 7.0新特性141.8.2 C# 6.0新特性171.8.3 C# 5.0新特性181.8.4 C# 4.0新特性191.8.5 C# 3.0新特性191.8.6 C# 2.0新特性20第2章 C#语言基础212.1 diyi个C#程序212.2 语法242.2.1 标识符和关键字242.2.2 字面量、标点与运算符262.2.3 注释262.3 类型基础272.3.1 预定义类型示例272.3.2 自定义类型示例282.3.3 转换302.3.4 值类型与引用类型312.3.5 预定义类型分类342.4 数值类型352.4.1 数值字面量362.4.2 数值转换382.4.3 算术运算符392.4.4 自增和自减运算符392.4.5 特殊整数类型运算392.4.6 8位和16位整数类型412.4.7 特殊的float和double值412.4.8 double和decimal的对比422.4.9 实数的舍入误差432.5 布尔类型和运算符432.5.1 布尔类型转换432.5.2 相等和比较运算符442.5.3 条件运算符442.6 字符串和字符452.6.1 char转换462.6.2 字符串类型462.7 数组482.7.1 默认数组元素初始化492.7.2 多维数组492.7.3 简化数组初始化表达式512.7.4 边界检查522.8 变量和参数522.8.1 栈和堆522.8.2 明确赋值542.8.3 默认值542.8.4 参数552.8.5 引用局部变量(C# 7)612.8.6 引用返回值(C# 7)612.8.7 var隐式类型局部变量612.9 表达式和运算符622.9.1 基础表达式632.9.2 空表达式632.9.3 赋值表达式632.9.4 运算符优先级和结合性642.9.5 运算符表642.10 null运算符682.10.1 null合并运算符682.10.2 null条件运算符(C# 6)682.11 语句692.11.1 声明语句692.11.2 表达式语句702.11.3 选择语句712.11.4 迭代语句752.11.5 跳转语句772.11.6其他语句782.12 命名空间792.12.1 using指令802.12.2 using static指令(C# 6)802.12.3 命名空间中的规则812.12.4 类型和命名空间别名832.12.5 高级命名空间特性83第3章 在C#中创建类型863.1 类863.1.1 字段863.1.2 方法873.1.3 实例构造器893.1.4 对象初始化器923.1.5 this引用943.1.6 属性943.1.7 索引器973.1.8 常量983.1.9 静态构造器993.1.10 静态类1003.1.11 终结器1013.1.12 分部类型和方法1013.1.13 nameof运算符(C#6)1023.2 继承1033.2.1 多态1043.2.2 类型转换和引用转换1043.2.3 虚函数成员1073.2.4 抽象类和抽象成员1083.2.5 隐藏继承成员1083.2.6 密封函数和类1103.2.7 base关键字1103.2.8 构造器和继承1103.2.9 重载和解析1123.3 object类型1123.3.1 装箱和拆箱1133.3.2 静态和运行时类型检查1143.3.3 GetType方法和typeof运算符1153.3.4 ToString方法1153.3.5 object的成员列表1163.4 结构体1163.5 访问权限修饰符1183.5.1 示例1183.5.2 友元程序集1193.5.3 可访问性封顶1193.5.4 访问权限修饰符的限制1193.6 接口1203.6.1 扩展接口1213.6.2 显式接口实现1213.6.3 虚方法实现接口成员1223.6.4 在子类中重新实现接口1223.6.5 接口和装箱1243.7 枚举类型1253.7.1 枚举类型转换1263.7.2 标志枚举类型1263.7.3 枚举运算符1273.7.4 类型安全问题1273.8 嵌套类型1283.9 泛型1303.9.1 泛型类型1303.9.2 为什么需要泛型1313.9.3 泛型方法1323.9.4 声明类型参数1333.9.5 typeof和未绑定泛型类型1333.9.6 泛型的默认值1343.9.7 泛型的约束1343.9.8 继承泛型类型1363.9.9 自引用泛型声明1363.9.10 静态数据1363.9.11 类型参数的转换1373.9.12 协变1383.9.13 逆变1413.9.14 C#泛型和C++模板对比142第4章 C#的高级特性1434.1 委托1434.1.1 用委托书写插件方法1444.1.2 多播委托1454.1.3 实例目标方法和静态目标方法1474.1.4 泛型委托类型1474.1.5 Func和Action委托1484.1.6 委托和接口1494.1.7 委托的兼容性1504.2 事件1524.2.1 标准事件模式1544.2.2 事件访问器1584.2.3 事件的修饰符1594.3 Lambda表达式1594.3.1 显式指定Lambda参数的类型1604.3.2 捕获外部变量1614.3.3 Lambda表达式和局部方法的对比1634.4 匿名方法1644.5 try语句和异常1654.5.1 catch子句1674.5.2 finally块1684.5.3 抛出异常1704.5.4 System.Exception的关键属性1724.5.5 常用的异常类型1724.5.6 TryXXX方法模式1734.5.7 异常的替代方式1734.6 可枚举类型和迭代器1744.6.1 可枚举类型1744.6.2 集合的初始化器1754.6.3 迭代器1764.6.4 迭代器语义1774.6.5 组合序列1784.7 可空类型1804.7.1 Nullable结构体1804.7.2 隐式和显式的可空对象转换1804.7.3 装箱拆箱可空值1814.7.4 运算符优先级提升1814.7.5 在bool?上使用&和|运算符1834.7.6 可空类型和null运算符1834.7.7 可空类型的应用场景1844.7.8 可空类型的替代方案1844.8 扩展方法1854.8.1 扩展方法链1864.8.2 二义性与解析1864.9 匿名类型1884.10 元组(C# 7)1894.10.1 元组元素命名1904.10.2 ValueTuple.Create1924.10.3 元组的解构1924.10.4 元组的比较1934.10.5 System.Tuple类1934.11 特性1934.11.1 特性类1944.11.2 命名和位置特性参数1944.11.3 特性的目标1954.11.4 指定多个特性1954.12 调用者信息特性1954.13 动态绑定1974.13.1 静态绑定与动态绑定1974.13.2 自定义绑定1984.13.3 语言绑定1994.13.4 RuntimeBinderException2004.13.5 动态类型的运行时表示2004.13.6 动态转换2014.13.7 var与dynamic2014.13.8 动态表达式2024.13.9 无动态接收者的动态调用2024.13.10 动态表达式中的静态类型2034.13.11 不可调用的函数2044.14 运算符重载2054.14.1 运算符函数2064.14.2 重载等号和比较运算符2064.14.3 自定义隐式和显式转换2074.14.4 重载true和false2084.15 不安全的代码和指针2094.15.1 指针基础2094.15.2 不安全的代码2094.15.3 fixed语句2094.15.4 指针取成员运算符2104.15.5 数组2104.15.6 void*2114.15.7 指向非托管代码的指针2124.16 预处理指令2124.16.1 Conditional特性2134.16.2 Pragma警告2144.17 XML文档2144.17.1 标准的XML文档标签2154.17.2 用户定义标签2174.17.3 类型或成员交叉引用217第5章 框架概述2195.1 .NET标准2.02215.1.1 旧版本.NET标准2225.1.2 引用程序集2225.2 CLR和核心框架2235.2.1 系统类型2235.2.2 文本处理2235.2.3 集合2235.2.4 查询2245.2.5 XML2245.2.6 诊断2245.2.7 并发与异步2255.2.8 流与I/O2255.2.9 网络2255.2.10 序列化2255.2.11 程序集、反射和特性2265.2.12 动态编程2265.2.13 安全性2265.2.14 高级线程功能2265.2.15 并行编程2275.2.16 应用程序域2275.2.17 原生互操作性与COM互操作性2275.3 应用技术2275.3.1 用户界面API2275.3.2 后台技术2305.3.3 分布式系统技术232第6章 框架基础2346.1 字符串与文本处理2346.1.1 字符2346.1.2 字符串2366.1.3 字符串的比较2406.1.4 StringBuilder2436.1.5 文本编码和Unicode2446.2 日期和时间2486.2.1 TimeSpan2486.2.2 DateTime和DateTimeOffset2496.3 日期和时区2556.3.1 DateTime与时区2566.3.2 DateTimeOffset与时区2566.3.3 TimeZone和TimeZoneInfo2576.3.4 夏令时与DateTime2616.4 格式化和解析2626.4.1 ToString和Parse2636.4.2 格式提供器2636.5 标准格式字符串与解析标记2686.5.1 数字格式字符串2686.5.2 NumberStyles2706.5.3 Date/Time格式字符串2726.5.4 DateTimeStyles2756.5.5 枚举的格式字符串2756.6 其他转换机制2756.6.1 Convert类2766.6.2 XmlConvert2786.6.3 类型转换器2786.6.4 BitConverter2796.7 全球化2796.7.1 全球化检查清单2806.7.2 测试2806.8 操作数字2816.8.1 转换2816.8.2 Math2816.8.3 BigInteger2826.8.4 Complex2836.8.5 Random2846.9 枚举2856.9.1 枚举值转换2856.9.2 列举枚举值2876.9.3 枚举的工作方式2886.10 Guid结构体2886.11 相等比较2896.11.1 值相等和引用相等2896.11.2 标准等值比较协议2906.11.3 相等比较和自定义类型2956.12 顺序比较3006.12.1 IComparable3006.12.2 <和>3016.12.3 实现IComparable接口3026.13实用类3036.13.1 Console类3036.13.2 Environment类3046.13.3 Process类3046.13.4 AppContext类306第7章 集合3077.1 枚举3077.1.1 IEnumerable和IEnumerator3087.1.2 IEnumerable和IEnumerator3097.1.3 实现枚举接口3117.2 ICollection和IList接口3157.2.1 ICollection和ICollection3167.2.2 IList和IList3177.2.3 IReadOnlyList3187.3 Array类3187.3.1 创建和索引3217.3.2 枚举3227.3.3 长度和维数3237.3.4 搜索3237.3.5 排序3257.3.6 反转数组元素3267.3.7 复制数组3267.3.8 转换和调整大小3267.4 List、Queue、Stack和Set3277.4.1 List和ArrayList3277.4.2 LinkedList3307.4.3 Queue和Queue3327.4.4 Stack和Stack3327.4.5 BitArray3337.4.6 HashSet和SortedSet3347.5 字典3367.5.1 IDictionary3367.5.2 IDictionary3387.5.3 Dictionary和HashTable3397.5.4 OrderedDictionary3407.5.5 ListDictionary和HybridDictionary3407.5.6 排序字典3417.6 自定义集合与代理3427.6.1 Collection和CollectionBase3437.6.2 KeyedCollection和DictionaryBase3457.6.3 ReadOnlyCollection3487.7 扩展相等比较和排序操作3497.7.1 IEqualityComparer和EqualityComparer3507.7.2 IComparer和Comparer3527.7.3 StringComparer3537.7.4 IStructuralEquatable和IStructuralComparable355第8章 LINQ查询3568.1 入门3568.2 流式语法3588.2.1 查询运算符链3598.2.2 使用Lambda表达式3618.2.3 原始顺序3648.2.4 其他运算符3648.3 查询表达式3658.3.1 范围变量3678.3.2 LINQ查询语法与SQL语法3688.3.3 查询语法和流式语法3688.3.4 混合查询语法3698.4 延迟执行3698.4.1 重复执行3708.4.2 捕获变量3718.4.3 延迟执行的工作原理3728.4.4 串联装饰器3738.4.5 查询语句的执行方式3758.5 子查询3768.6 构造方式3798.6.1 渐进式查询构造3798.6.2 into关键字3808.6.3 查询的包装3818.7 映射方式3828.7.1 对象初始化器3828.7.2 匿名类型3838.7.3 let关键字3848.8 解释型查询3858.8.1 解释型查询的工作机制3878.8.2 综合使用解释型查询和本地查询3898.8.3 AsEnumerable方法3908.9 LINQ to SQL和Entity Framework3918.9.1 LINQ to SQL的实体类3928.9.2 Entity Framework的实体类3938.9.3 DataContext和ObjectContext3958.9.4 关联3998.9.5 L2S和EF的延迟执行4008.9.6 DataLoadOptions4018.9.7 Entity Framework中的立即加载功能4038.9.8 更新4038.9.9 L2S和EF的API对比4058.10 构建查询表达式4068.10.1 委托与表达式树4068.10.2 表达式树408第9章 LINQ运算符4129.1 概述4139.1.1 序列→序列4149.1.2 序列→元素或标量值4159.1.3 void →序列4169.2 筛选4169.2.1 Where4179.2.2 Take和Skip运算符4199.2.3 TakeWhile和SkipWhile4209.2.4 Distinct4209.3 映射4209.3.1 Select4219.3.2 SelectMany4259.4 连接4339.4.1 Join和GroupJoin4339.4.2 Zip运算符4419.5 排序4419.6 分组4449.7 集合运算符4489.7.1 Concat和Union4489.7.2 Intersect和Except4489.8 转换方法4499.8.1 OfType和Cast4499.8.2 ToArray、ToList、ToDictionary和ToLookup4519.8.3 AsEnumerable和AsQueryable4519.9 元素运算符4529.9.1 First、Last和Single4529.9.2 ElementAt运算符4539.9.3 DefaultIfEmpty4539.10 聚合方法4549.10.1 Count和LongCount4549.10.2 Min和Max4549.10.3 Sum和Average4559.10.4 Aggregate4569.11 量词运算符4589.11.1 Contains和Any4599.11.2 All和SequenceEqual4599.12 生成集合的方法4609.12.1 Empty4609.12.2 Range和Repeat460第10章 LINQ to XML46110.1 架构概述46110.1.1 什么是DOM46110.1.2 LINQ to XML的DOM46210.2 X-DOM概述46210.2.1 加载和解析46410.2.2 保存和序列化46510.3 实例化X-DOM46610.3.1 函数式构建46610.3.2 指定内容46710.3.3 自动深度克隆46810.4 导航和查询46810.4.1 导航至子节点46910.4.2 导航至父节点47210.4.3 导航至同级节点47310.4.4 导航至节点的属性47310.5 更新X-DOM47410.5.1 简单的值更新47410.5.2 更新子节点和属性47410.5.3 通过父节点更新子节点47510.6 使用Value47710.6.1 设置Value47710.6.2 获得Value47810.6.3 值与混合内容节点47910.6.4 自动连接XText节点47910.7 文档和声明48010.7.1 XDocument48010.7.2 XML声明48210.8 名称和命名空间48310.8.1 XML中的命名空间48410.8.2 在X-DOM中指定命名空间48610.8.3 X-DOM和默认命名空间48710.8.4 前缀48810.9 注解48910.10 将数据映射到X-DOM49010.10.1 排除空元素49210.10.2 流映射49310.10.3 转换X-DOM494第11章 其他XML技术49711.1 XmlReader49711.1.1 读取节点49911.1.2 读取元素50111.1.3 读取属性50511.1.4 命名空间和前缀50611.2 XmlWriter50711.2.1 写入属性50811.2.2 写入其他类型节点50811.2.3 命名空间和前缀50911.3 XmlReader/XmlWriter的使用模式50911.3.1 处理多层次结构数据50911.3.2 混合使用XmlReader/XmlWriter和X-DOM51211.4 XSD和大纲的验证51311.5 XSLT516第12章 对象销毁与垃圾回收51812.1 IDisposable接口、Dispose方法和Close方法51812.1.1 标准销毁语义51912.1.2 销毁对象的时机52012.1.3 选择性销毁52212.1.4 在销毁时清理字段52312.2 自动垃圾回收52412.2.1 根52512.2.2 垃圾回收和WinRT52512.3 终结器52512.3.1 在终结器中调用Dispose52712.3.2 对象的复活52812.4 垃圾回收器的工作方式53012.4.1 优化技术53112.4.2 强制垃圾回收53412.4.3 垃圾回收过程的调整53412.4.4 内存压力53512.5 托管内存泄露53512.5.1 定时器53612.5.2 诊断内存泄露53812.6 弱引用53812.6.1 弱引用和缓存53912.6.2 弱引用和事件540第13章 诊断54313.1 条件编译54313.1.1 条件编译与静态变量标志54413.1.2 Conditional特性54513.2 Debug和Trace类54713.2.1 Fail和Assert方法54713.2.2 TraceListener类54813.2.3 刷新并关闭监听器55013.3 调试器的集成55013.3.1 附加和断点55113.3.2 Debugger特性55113.4 进程与线程处理55113.4.1 检查运行中的进程55213.4.2 在进程中检查线程55213.5 StackTrace和StackFrame类55213.6 Windows事件日志55413.6.1 写入事件日志55513.6.2 读取事件日志55513.6.3 监视事件日志55613.7 性能计数器55713.7.1 遍历可用的计数器55713.7.2 检索性能计数器55813.7.3 创建计数器并写入性能数据56013.8 Stopwatch类562第14章 并发与异步56314.1 概述56314.2 线程56414.2.1 创建线程56414.2.2 汇合与休眠56614.2.3 阻塞56614.2.4 本地状态与共享状态56814.2.5 锁与线程安全57014.2.6 向线程传递数据57114.2.7 异常处理57314.2.8 前台线程与后台线程57414.2.9 线程的优先级57514.2.10 信号发送57614.2.11 富客户端应用程序的线程57614.2.12 同步上下文57814.2.13 线程池57914.3 任务58114.3.1 启动任务58214.3.2 返回值58314.3.3 异常58414.3.4 延续58514.3.5 TaskCompletionSource类58714.3.6 Task.Delay方法58914.4 异步原则59014.4.1 同步操作与异步操作59014.4.2 什么是异步编程59014.4.3 异步编程与延续59114.4.4 语言支持的重要性59314.5 C#的异步函数59514.5.1 等待59514.5.2 编写异步函数60114.5.3 异步Lambda表达式60514.5.4 WinRT中的异步方法60614.5.5 异步与同步上下文60614.5.6 优化60814.6 异步模式61014.6.1 取消操作61014.6.2 进度报告61214.6.3 基于任务的异步模式61414.6.4 任务组合器61414.7 已废弃的模式61814.7.1 异步编程模型(APM)61814.7.2 基于事件的异步模式(EAP)61914.7.3 BackgroundWorker类620第15章 流与I/O62215.1 .NET流的架构62215.2 使用流62415.2.1 读取和写入62615.2.2 查找62715.2.3 关闭和刷新62715.2.4 超时62815.2.5 线程安全62815.2.6 后台存储流62815.2.7 FileStream类62915.2.8 MemoryStream63215.2.9 PipeStream63315.2.10 BufferedStream63615.3 流适配器63715.3.1 文本适配器63815.3.2 二进制适配器64315.3.3 关闭和销毁流适配器64415.4 压缩流64615.5 操作ZIP文件64815.6 文件与目录操作64915.6.1 File类64915.6.2 Directory类65215.6.3 FileInfo类和DirectoryInfo类65315.6.4 Path类型65415.6.5 特殊文件夹65515.6.6 查询卷信息65815.6.7 捕获文件系统事件65815.7 在UWP中进行文件I/O操作65915.7.1 操作目录66015.7.2 操作文件66115.7.3 UWP应用的独立存储区66215.8 内存映射文件66215.8.1 内存映射文件和随机I/O66215.8.2 内存映射文件和共享内存66315.8.3 使用视图访问器66315.9 独立存储区664第16章 网络66516.1 .NET网络架构66516.2 地址与端口66716.3 URI66816.4 客户端类型67016.4.1 WebClient类67116.4.2 WebRequest和WebResponse67316.4.3 HttpClient类67516.4.4 代理67916.4.5 身份验证68016.4.6 异常处理68216.5 使用HTTP68416.5.1 头部信息68416.5.2 查询字符串68516.5.3 上传表单数据68616.5.4 cookie68716.5.5 表单验证68816.5.6 SSL69016.6 编写HTTP服务器69016.7 使用FTP69316.8 使用DNS69516.9 通过SmtpClient类发送邮件69616.10 使用TCP69716.11 使用TCP接收POP3邮件70016.12 在Windows Runtime中使用TCP702第17章 序列化70417.1 序列化的概念70417.1.1 序列化引擎70417.1.2 格式化器70717.1.3 显式和隐式序列化70717.2 数据契约的序列化70817.2.1 DataContractSerializer与NetDataContractSerializer70817.2.2 使用序列化器70917.2.3 序列化子类71217.2.4 对象引用71317.2.5 版本容错性71617.2.6 成员顺序71617.2.7 null和空值71717.3 数据契约与集合71817.3.1 子类集合元素71917.3.2 自定义集合与元素名称71917.4 扩展数据契约72017.4.1 序列化与反序列化钩子72117.4.2 与[Serializable] 的互操作72217.4.3 与IXmlSerializable的互操作72417.5 二进制序列化器72417.6 二进制序列化特性72617.6.1 [NonSerialized]72617.6.2 [OnDeserializing]和[OnDeserialized]72617.6.3 [OnSerializing]和[OnSerialized]72717.6.4 [OptionalField]特性和版本72817.7 使用ISerializable接口进行二进制序列化72917.8 XML序列化73317.8.1 基于特性的序列化入门73317.8.2 子类和子对象73517.8.3 序列化集合73817.8.4 IXmlSerializable接口741第18章 程序集74318.1 程序集的组成部分74318.1.1 程序集清单74418.1.2 应用程序清单74518.1.3 模块74618.1.4 Assembly类74718.2 强名称和程序集签名74818.2.1 如何为程序集添加强名称74918.2.2 延迟签名75018.3 程序集名称75118.3.1 完全限定名称75118.3.2 AssemblyName类75218.3.3 程序集的信息版本和文件版本75318.4 认证代码签名75318.4.1 如何进行认证代码签名75518.4.2 认证代码验证75618.5 全局程序集缓存75718.5.1 如何将程序集安装到GAC75818.5.2 GAC和版本控制75918.6 资源和附属程序集75918.6.1 直接嵌入资源76018.6.2 .resources文件76218.6.3 .resx文件76218.6.4 附属程序集76518.6.5 文化和子文化76718.7 程序集的解析和加载76818.7.1 程序集和类型解析规则76918.7.2 AssemblyResolve事件76918.7.3 加载程序集77018.8 在基础目录之外部署程序集77418.9 打包单个可执行文件77518.10 处理未引用的程序集776第19章 反射和元数据77919.1 反射和激活类型78019.1.1 获取类型78019.1.2 类型名称78219.1.3 基本类型和接口78419.1.4 实例化类型78519.1.5 泛型类型78619.2 反射并调用成员78719.2.1 成员类型79019.2.2 C#成员与CLR成员79119.2.3 泛型类型成员79319.2.4 动态调用成员79319.2.5 方法的参数79419.2.6 使用委托提高性能79619.2.7 访问非公有成员79619.2.8 泛型方法79819.2.9 调用未知类型的泛型接口成员79819.3 反射程序集80019.3.1 将程序集加载至只反射的上下文中80119.3.2 模块80219.4 使用特性80219.4.1 特性基础80219.4.2 AttributeUsage特性80419.4.3 定义自定义的特性80419.4.4 在运行时检索特性80519.4.5 在只反射上下文下检索特性80719.5 动态生成代码80819.5.1 使用DynamicMethod生成IL80819.5.2 评估栈81019.5.3 向动态方法传递参数81019.5.4 生成局部变量81119.5.5 分支81219.5.6 实例化对象和调用实例方法81319.5.7 异常处理81519.6 生成程序集和类型81519.6.1 保存生成的程序集81719.6.2 Reflection.Emit对象模型81819.7 生成类型成员81919.7.1 生成方法82019.7.2 生成字段和属性82219.7.3 生成构造器82419.7.4 附加特性82519.8 生成泛型方法和类型82519.8.1 定义泛型方法82519.8.2 定义泛型类型82719.9 复杂的生成目标82719.9.1 未创建的封闭式泛型82719.9.2 循环依赖82919.10 解析IL831第20章 动态编程83720.1 动态语言运行时83720.2 数值类型统一83920.3 动态成员重载解析84020.3.1 简化访问者模式84020.3.2 调用未知类型的泛型类型成员84420.4 实现动态对象84620.4.1 DynamicObject84720.4.2 ExpandoObject84920.5 与动态语言进行互操作849第21章 安全85221.1 代码访问安全性85221.2 身份和角色安全85321.2.1 权限85321.2.2 声明式安全性与命令式安全性85421.2.3 实现身份和角色安全85521.2.4 设定用户和角色85521.3 操作系统安全性85621.3.1 在标准用户账户下运行程序85721.3.2 管理员权限提升与虚拟化85821.4 加密概述85921.5 Windows数据保护85921.6 散列法86021.7 对称加密86221.7.1 内存加密86321.7.2 串联加密流86421.7.3 销毁加密对象86621.7.4 密钥管理86621.8 公钥加密和签名86721.8.1 RSA类86821.8.2 数字签名869第22章 高级线程处理87122.1 同步概述87122.2 排它锁87222.2.1 lock语句87222.2.2 Monitor.Enter方法和Monitor.Exit方法87322.2.3 选择同步对象87422.2.4 使用锁的时机87522.2.5 锁与原子性87622.2.6 嵌套锁87722.2.7 死锁87822.2.8 性能87922.2.9 Mutex87922.3 锁和线程安全性88022.3.1 线程安全和.NET Framework类型88222.3.2 应用服务器的线程安全性88422.3.3 不可变对象88522.4 非排它锁88622.4.1 信号量88622.4.2 读写锁88722.5 使用事件等待句柄发送信号89222.5.1 AutoResetEvent89222.5.2 ManualResetEvent89522.5.3 CountdownEvent89622.5.4 创建跨进程的EventWaitHandle89722.5.5 等待句柄和延续操作89722.5.6 将等待句柄转换为任务89822.5.7 WaitAny、WaitAll和SignalAndWait89922.6 Barrier类90022.7 延迟初始化90222.7.1 Lazy90322.7.2 LazyInitializer类90322.8 线程本地存储90422.8.1 [ThreadStatic]特性90522.8.2 ThreadLocal类90522.8.3 GetData方法和SetData方法90622.9 Interrupt和Abort方法90622.10 Suspend和Resume方法90822.11 定时器90822.11.1 多线程定时器90922.11.2 单线程定时器911第23章 并行编程91323.1 选择PFX的原因91323.1.1 PFX的概念91423.1.2 PFX组件91423.1.3 使用PFX的场合91623.2 PLINQ91623.2.1 并行执行的特性91823.2.2 PLINQ与顺序91923.2.3 PLINQ的限制91923.2.4 示例:并行拼写检查器92023.2.5 纯函数92223.2.6 设置并行级别92223.2.7 取消操作92323.2.8 PLINQ优化92423.3 Parallel类92923.3.1 Parallel.Invoke方法92923.3.2 Parallel.For方法和Parallel.ForEach方法93023.4 任务并行93523.4.1 创建并启动任务93623.4.2 等待多个任务93823.4.3 取消任务93923.4.4 延续任务94023.4.5 任务调度器94423.4.6 TaskFactory类94523.5 处理AggregateException94523.6 并发集合94823.6.1 IProducerConsumerCollection接口94923.6.2 ConcurrentBag类95023.7 BlockingCollection类951第24章 应用程序域95524.1 应用程序域的架构95524.2 创建和销毁应用程序域95624.3 使用多个应用程序域95824.4 DoCallBack方法96024.5 监视应用程序域96124.6 应用程序域和线程96124.7 在应用程序域间共享数据96324.7.1 通过“槽”共享数据96324.7.2 进程内Remoting通信96424.7.3 隔离类型与程序集965第25章 原生程序和COM组件互操作性96925.1 调用原生DLL96925.2 类型的封送97025.2.1 常见类型的封送97025.2.2 类和结构体的封送97125.2.3 in和out参数封送97325.3 非托管代码中的回调函数97325.4 模拟C共用体97425.5 共享内存97525.6 将结构体映射到非托管内存中97725.7 COM互操作性98125.7.1 COM的目的98125.7.2 COM类型系统基础98225.8 在C#中调用COM组件98325.8.1 可选参数和命名参数98425.8.2 隐式ref参数98525.8.3 索引器98525.8.4 动态绑定98625.9 内嵌互操作类型98725.10 主互操作程序集98825.11 在COM中调用C#对象988第26章 正则表达式98926.1 正则表达式基础99026.1.1 编译正则表达式99126.1.2 RegexOptions属性99126.1.3 字符转义99226.1.4 字符集合99326.2 量词符号99426.3 零宽度断言99526.3.1 前向条件和后向条件99526.3.2 锚点99626.3.3 单词边界99726.4 分组99826.5 替换并分割文本100026.5.1 MatchEvaluator委托100026.5.2 拆分文本100126.6 正则表达式实例100126.6.1 匹配美国社会保险号/电话号码100126.6.2 提取“name=value”中的名称和值(一行一个)100126.6.3 强密码验证100226.6.4 每行至少80个字符100226.6.5 解析日期/时间(N/N/N H:M:S AM/PM)100226.6.6 匹配罗马字符100326.6.7 删除重复单词100326.6.8 统计单词数目100326.6.9 匹配Guid100326.6.10 解析XML/HTML标签100326.6.11 分隔驼峰命名单词100426.6.12 获得合法的文件名100426.6.13 将Unicode字符转义为HTML100426.6.14 反转义HTTP查询字符串中的字符100426.6.15 从网站统计日志中解析谷歌搜索关键词100526.7 正则表达式语言参考1005第27章 Roslyn编译器100927.1 Roslyn架构101027.2 语法树101127.2.1 语法树的结构101127.2.2 获取语法树101427.2.3 语法树的遍历和搜索101527.2.4 非关键信息101927.2.5 语法树的转换102227.3 编译过程和语义模型102627.3.1 创建编译过程102627.3.2 生成程序集102827.3.3 查询语义模型102827.3.4 示例:修改符号名称1033