图书介绍
CLR via C# 第4版PDF|Epub|txt|kindle电子书版本网盘下载
![CLR via C# 第4版](https://www.shukui.net/cover/63/34457183.jpg)
- (美)李希特著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302380979
- 出版时间:2015
- 标注页数:730页
- 文件大小:85MB
- 文件页数:747页
- 主题词:C语言-程序设计
PDF下载
下载说明
CLR via C# 第4版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第Ⅰ部分 CLR基础3
第1章 CLR的执行模型3
1.1 将源代码编译成托管模块3
1.2 将托管模块合并成程序集6
1.3 加载公共语言运行时7
1.4 执行程序集的代码10
1.4.1 IL和验证15
1.4.2 不安全的代码16
1.5 本机代码生成器:NGen.exe17
1.6 Framework类库20
1.7 通用类型系统22
1.8 公共语言规范24
1.9 与非托管代码的互操作性28
第2章 生成、打包、部署和管理应用程序及类型29
2.1 .NET Framework部署目标29
2.2 将类型生成到模块中31
2.3 元数据概述33
2.4 将模块合并成程序集39
2.4.1 使用Visual Studio IDE将程序集添加到项目中44
2.4.2 使用程序集链接器45
2.4.3 为程序集添加资源文件46
2.5 程序集版本资源信息47
2.6 语言文化51
2.7 简单应用程序部署(私有部署的程序集)52
2.8 简单管理控制(配置)53
第3章 共享程序集和强命名程序集57
3.1 两种程序集,两种部署58
3.2 为程序集分配强名称59
3.3 全局程序集缓存63
3.4 在生成的程序集中引用强命名程序集65
3.5 强命名程序集能防篡改66
3.6 延迟签名67
3.7 私有部署强命名程序集69
3.8 “运行时”如何解析类型引用70
3.9 高级管理控制(配置)73
第Ⅱ部分 设计类型81
第4章 类型基础81
4.1 所有类型都从System.Object派生81
4.2 类型转换83
4.3 命名空间和程序集86
4.4 运行时的相互关系90
第5章 基元类型、引用类型 和值类型99
5.1 编程语言的基元类型99
5.2 引用类型和值类型106
5.3 值类型的装箱和拆箱111
5.3.1 使用接口更改已装箱值类型中的字段(以及为什么不应该这样做)121
5.3.2 对象相等性和同一性123
5.4 对象哈希码126
5.5 dynamic基元类型127
第6章 类型和成员基础135
6.1 类型的各种成员135
6.2 类型的可见性138
6.3 成员的可访问性139
6.4 静态类141
6.5 分部类、结构和接口142
6.6 组件、多态和版本控制143
6.6.1 CLR如何调用虚方法、属性和事件145
6.6.2 合理使用类型的可见性和成员的可访问性148
6.6.3 对类型进行版本控制时的虚方法的处理150
第7章 常量和字段155
7.1 常量155
7.2 字段156
第8章 方法161
8.1 实例构造器和类(引用类型)161
8.2 实例构造器和结构(值类型)164
8.3 类型构造器167
8.4 操作符重载方法170
8.5 转换操作符方法173
8.6 扩展方法176
8.6.1 规则和原则178
8.6.2 用扩展方法扩展各种类型179
8.6.3 ExtensionAttribute类181
8.7 分部方法181
第9章 参数185
9.1 可选参数和命名参数185
9.1.1 规则和原则186
9.1.2 DefaultParameterValueAttribute和OptionalAttribute188
9.2 隐式类型的局部变量188
9.3 以传引用的方式向方法传递参数190
9.4 向方法传递可变数量的参数195
9.5 参数和返回类型的设计规范197
9.6 常量性198
第10章 属性201
10.1 无参属性201
10.1.1 自动实现的属性204
10.1.2 合理定义属性205
10.1.3 对象和集合初始化器208
10.1.4 匿名类型209
10.1.5 System.Tuple类型212
10.2 有参属性214
10.3 调用属性访问器方法时的性能218
10.4 属性访问器的可访问性219
10.5 泛型属性访问器方法219
第11章 事件221
11.1 设计要公开事件的类型222
11.1.1 第一步:定义类型来容纳所有需要发送给事件通知接收者的附加信息222
11.1.2 第二步:定义事件成员223
11.1.3 第三步:定义负责引发事件的方法来通知事件的登记对象224
11.1.4 第四步:定义方法将输入转化为期望事件226
11.2 编译器如何实现事件226
11.3 设计侦听事件的类型228
11.4 显式实现事件230
第12章 泛型233
12.1 FCL中的泛型237
12.2 泛型基础结构238
12.2.1 开放类型和封闭类型239
12.2.2 泛型类型和继承240
12.2.3 泛型类型同一性242
12.2.4 代码爆炸243
12.3 泛型接口243
12.4 泛型委托244
12.5 委托和接口的逆变和协变泛型类型实参245
12.6 泛型方法247
12.7 泛型和其他成员249
12.8 可验证性和约束250
12.8.1 主要约束252
12.8.2 次要约束253
12.8.3 构造器约束254
12.8.4 其他可验证性问题254
第13章 接口259
13.1 类和接口继承259
13.2 定义接口260
13.3 继承接口261
13.4 关于调用接口方法的更多探讨263
13.5 隐式和显式接口方法实现(幕后发生的事情)264
13.6 泛型接口266
13.7 泛型和接口约束268
13.8 实现多个具有相同方法名和签名的接口269
13.9 用显式接口方法实现来增强编译时类型安全性270
13.1 0谨慎使用显式接口方法实现271
13.1 1设计:基类还是接口274
第Ⅲ部分 基本类型279
第14章 字符、字符串和文本处理279
14.1 字符279
14.2 System.String类型282
14.2.1 构造字符串282
14.2.2 字符串是不可变的284
14.2.3 比较字符串285
14.2.4 字符串留用290
14.2.5 字符串池293
14.2.6 检查字符串中的字符和文本元素293
14.2.7 其他字符串操作295
14.3 高效率构造字符串296
14.3.1 构造StringBuilder对象296
14.3.2 StringBuilder的成员297
14.4 获取对象的字符串表示:ToString299
14.4.1 指定具体的格式和语言文化299
14.4.2 将多个对象格式化成一个字符串303
14.4.3 提供定制格式化器304
14.5 解析字符串来获取对象:Parse306
14.6 编码:字符和字节的相互转换308
14.6.1 字符和字节流的编码和解码313
14.6.2 Base-64字符串编码和解码314
14.7 安全字符串315
第15章 枚举类型和位标志319
15.1 枚举类型319
15.2 位标志324
15.3 向枚举类型添加方法328
第16章 数组329
16.1 初始化数组元素331
16.2 数组转型333
16.3 所有数组都隐式派生自System.Array335
16.4 所有数组都隐式实现IEnumerable,ICollection和IList336
16.5 数组的传递和返回337
16.6 创建下限非零的数组338
16.7 数组的内部工作原理339
16.8 不安全的数组访问和固定大小的数组342
第17章 委托345
17.1 初识委托345
17.2 用委托回调静态方法347
17.3 用委托回调实例方法349
17.4 委托揭秘349
17.5 用委托回调多个方法(委托链)353
17.5.1 C#对委托链的支持356
17.5.2 取得对委托链调用的更多控制357
17.6 委托定义不要太多(泛型委托)359
17.7 C#为委托提供的简化语法360
17.7.1 简化语法1:不需要构造委托对象360
17.7.2 简化语法2:不需要定义回调方法(lambda表达式)361
17.7.3 简化语法3:局部变量不需要手动包装到类中即可传给回调方法364
17.8 委托和反射367
第18章 定制特性371
18.1 使用定制特性371
18.2 定义自己的特性类374
18.3 特性构造器和字段/属性数据类型377
18.4 检测定制特性378
18.5 两个特性实例的相互匹配382
18.6 检测定制特性时不创建从Attribute派生的对象384
18.7 条件特性类387
第19章 可空值类型389
19.1 C#对可空值类型的支持391
19.2 C#的空接合操作符393
19.3 CLR对可空值类型的特殊支持394
19.3.1 可空值类型的装箱394
19.3.2 可空值类型的拆箱395
19.3.3 通过可空值类型调用GetType395
19.3.4 通过可空值类型调用接口方法395
第Ⅳ部分 核心机制399
第20章 异常和状态管理399
20.1 定义“异常”399
20.2 异常处理机制401
20.2.1 try块402
20.2.2 catch块402
20.2.3 finally块404
20.3 System.Exception类407
20.4 FCL定义的异常类410
20.5 抛出异常412
20.6 定义自己的异常类413
20.7 用可靠性换取开发效率415
20.8 设计规范和最佳实践422
20.8.1 善用finally块423
20.8.2 不要什么都捕捉424
20.8.3 得体地从异常中恢复425
20.8.4 发生不可恢复的异常时回滚部分完成的操作——维持状态426
20.8.5 隐藏实现细节来维系协定427
20.9 未处理的异常429
20.10 对异常进行调试433
20.11 异常处理的性能问题435
20.12 约束执行区域(CER)438
20.13 代码协定441
第21章 托管堆和垃圾回收447
21.1 托管堆基础447
21.1.1 从托管堆分配资源448
21.1.2 垃圾回收算法449
21.1.3 垃圾回收和调试451
21.2 代:提升性能454
21.2.1 垃圾回收触发条件458
21.2.2 大对象459
21.2.3 垃圾回收模式459
21.2.4 强制垃圾回收462
21.2.5 监视应用程序的内存使用463
21.3 使用需要特殊清理的类型464
21.3.1 使用包装了本机资源的类型470
21.3.2 一个有趣的依赖性问题474
21.3.3 GC为本机资源提供的其他功能475
21.3.4 终结的内部工作原理479
21.3.5 手动监视和控制对象的生存期481
第22章 CLR寄宿和AppDomain489
22.1 CLR寄宿489
22.2 AppDomain491
跨越AppDomain边界访问对象494
22.3 卸载AppDomain504
22.4 监视AppDomain505
22.5 AppDomain FirstChance异常通知507
22.6 宿主如何使用AppDomain507
22.6.1 可执行应用程序507
22.6.2 Microsoft Silverlight富Internet应用程序508
22.6.3 MicrosoftASP.NET和XML Web服务应用程序508
22.6.4 Microsoft SQL Server509
22.6.5 更多的用法只局限于想象力509
22.7 高级宿主控制509
22.7.1 使用托管代码管理CLR509
22.7.2 写健壮的宿主应用程序510
22.7.3 宿主如何拿回它的线程511
第23章 程序集加载和反射515
23.1 程序集加载516
23.2 使用反射构建动态可扩展应用程序520
23.3 反射的性能521
23.3.1 发现程序集中定义的类型522
23.3.2 类型对象的准确含义522
23.3.3 构建Exception派生类型的层次结构524
23.3.4 构造类型的实例525
23.4 设计支持加载项的应用程序527
23.5 使用反射发现类型的成员529
23.5.1 发现类型的成员530
23.5.2 调用类型的成员533
23.5.3 使用绑定句柄减少进程的内存消耗537
第24章 运行时序列化541
24.1 序列化/反序列化快速入门542
24.2 使类型可序列化546
24.3 控制序列化和反序列化548
24.4 格式化器如何序列化类型实例551
24.5 控制序列化/反序列化的数据552
24.6 流上下文558
24.7 类型序列化为不同类型以及对象反序列化为不同对象559
24.8 序列化代理562
24.9 反序列化对象时重写程序集/类型566
第25章 与WinRT组件互操作569
25.1 CLR投射与WinRT组件类型系统规则571
25.2 框架投射575
25.2.1 从.NET代码中调用异步WinRT API575
25.2.2 WInRT流和.NET流之间的互操作579
25.2.3 在CLR和WinRT之间传输数据块580
25.3 用C#定义WinRT组件583
第Ⅴ部分 线程处理591
第26章 线程基础591
26.1 Windows为什么要支持线程591
26.2 线程开销592
26.3 停止疯狂595
26.4 CPU发展趋势597
26.5 CLR线程和Windows线程598
26.6 使用专用线程执行异步的计算限制操作599
26.7 使用线程的理由601
26.8 线程调度和优先级603
26.9 前台线程和后台线程608
26.10 继续学习609
第27章 计算限制的异步操作611
27.1 CLR线程池基础612
27.2 执行简单的计算限制操作612
27.3 执行上下文614
27.4 协作式取消和超时615
27.5 任务619
27.5.1 等待任务完成并获取结果620
27.5.2 取消任务622
27.5.3 任务完成时自动启动新任务623
27.5.4 任务可以启动子任务625
27.5.5 任务内部揭秘625
27.5.6 任务工厂627
27.5.7 任务调度器628
27.6 Parallel的静态For,ForEach和Invoke方法630
27.7 并行语言集成查询(PLINQ)634
27.8 执行定时计算限制操作636
27.9 线程池如何管理线程639
27.9.1 设置线程池限制639
27.9.2 如何管理工作者线程640
第28章 I/O限制的异步操作643
28.1 Windows如何执行I/O操作643
28.2 C#的异步函数647
28.3 编译器如何将异步函数转换成状态机649
28.4 异步函数扩展性653
28.5 异步函数和事件处理程序655
28.6 FCL的异步函数656
28.7 异步函数和异常处理658
28.8 异步函数的其他功能658
28.9 应用程序及其线程处理模型661
28.10 以异步方式实现服务器663
28.11 取消I/O操作664
28.12 有的I/O操作必须同步进行665
28.13 I/O请求优先级666
第29章 基元线程同步构造669
29.1 类库和线程安全671
29.2 基元用户模式和内核模式构造672
29.3 用户模式构造673
29.3.1 易变构造674
29.3.2 互锁构造678
29.3.3 实现简单的自旋锁682
29.3.4 Interlocked Anything模式685
29.4 内核模式构造687
29.4.1 Event构造691
29.4.2 Semaphore构造693
29.4.3 Mutex构造694
第30章 混合线程同步构造697
30.1 一个简单的混合锁697
30.2 自旋、线程所有权和递归699
30.3 FCL中的混合构造701
30.3.1 ManualResetEventSlim类和SemaphoreSlim类701
30.3.2 Monitor类和同步块701
30.3.3 ReaderWriterLockSlim类706
30.3.4 OneManyLock类709
30.3.5 CountdownEvent类711
30.3.6 Barrier类711
30.3.7 线程同步构造小结712
30.4 著名的双检锁技术713
30.5 条件变量模式717
30.6 异步的同步构造719
30.7 并发集合类723
译者后记727