图书介绍
CLR via C# 第3版【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- (美)瑞奇特著;靖译 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302232599
- 出版时间:2010
- 标注页数:778页
- 文件大小:248MB
- 文件页数:797页
- 主题词:C语言-程序设计
PDF下载
下载说明
CLR via C# 第3版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 加载公共语言运行时8
1.4 执行程序集的代码10
1.4.1 IL和验证15
1.4.2 不安全的代码16
1.5 本地代码生成器:NGen.exe18
1.6 Framework类库20
1.7 通用类型系统22
1.8 公共语言规范24
1.9 与非托管代码的互操作性28
第2章 生成、打包、部署和管理应用程序及类型29
2.1 .NET Framework部署目标29
2.2 将类型生成到模块中31
响应文件32
2.3 元数据概述34
2.4 将模块合并成程序集39
2.4.1 使用Visual Studio IDE将程序集添加到项目中45
2.4.2 使用程序集链接器46
2.4.3 为程序集添加资源文件48
2.5 程序集版本资源信息49
2.6 语言文化53
2.7 简单应用程序部署(私有部署的程序集)54
2.8 简单管理控制(配置)55
第3章 共享程序集和强命名程序集59
3.1 两种程序集,两种部署60
3.2 为程序集分配强名称61
3.3 全局程序集缓存65
3.4 在生成的程序集中引用一个强命名程序集67
3.5 强命名程序集能防范篡改69
3.6 延迟签名70
3.7 私有部署强命名程序集72
3.8 “运行时”如何解析类型引用73
3.9 高级管理控制(配置)76
发布者策略控制78
第Ⅱ部分 设计类型83
第4章 类型基础83
4.1 所有类型都从System.Object派生83
4.2 类型转换85
4.3 命名空间和程序集89
4.4 运行时的相互联系92
第5章 基元类型、引用类型和值类型101
5.1 编程语言的基元类型101
5.2 引用类型和值类型108
5.3 值类型的装箱和拆箱113
5.3.1 使用接口更改已装箱值类型中的字段(以及为什么不应该这样做)124
5.3.2 对象相等性和同一性127
5.4 对象哈希码129
5.5 dynamic基元类型131
第6章 类型和成员基础137
6.1 类型的各种成员137
6.2 类型的可见性140
友元程序集140
6.3 成员的可访问性142
6.4 静态类143
6.5 分部类、结构和接口145
6.6 组件、多态和版本控制146
6.6.1 CLR如何调用虚方法、属性和事件148
6.6.2 合理使用类型的可见性和成员的可访问性151
6.6.3 对类型进行版本控制时的虚方法的处理154
第7章 常量和字段159
7.1 常量159
7.2 字段160
第8章 方法165
8.1 实例构造器和类(引用类型)165
8.2 实例构造器和结构(值类型)168
8.3 类型构造器171
8.4 操作符重载方法176
8.5 转换操作符方法179
8.6 扩展方法182
8.6.1 规则和原则184
8.6.2 用扩展方法扩展各种类型185
8.6.3 ExtensionAttribute类187
8.7 分部方法188
第9章 参数191
9.1 可选参数和命名参数191
9.1.1 规则和原则192
9.1.2 DefaultParameterValueAttribute和OptionalAttribute194
9.2 隐式类型的局部变量194
9.3 以传引用的方式向方法传递参数196
9.4 向方法传递可变数量的参数201
9.5 参数和返回类型的指导原则203
9.6 常量性205
第10章 属性207
10.1 无参属性207
10.1.1 自动实现的属性210
10.1.2 合理定义属性211
10.1.3 对象和集合初始化器214
10.1.4 匿名类型215
10.1.5 System.Tuple类型218
1 0.2 有参属性220
10.3 调用属性访问器方法时的性能225
10.4 属性访问器的可访问性225
10.5 泛型属性访问器方法225
第11章 事件227
11.1 设计要公开事件的类型228
11.1.1 第一步:定义类型来容纳所有需要发送给事件通知接收者的附加信息229
11.1.2 第二步:定义事件成员229
11.1.3 第三步:定义负责引发事件的方法来通知事件的登记对象231
11.1.4 第四步:定义方法将输入转化为期望事件233
11.2 编译器如何实现事件233
11.3 设计侦听事件的类型235
11.4 显式实现事件237
第12章 泛型241
12.1 Framework类库中的泛型245
12.2 Wintellect的Power Collections库246
12.3 泛型基础结构247
12.3.1 开放类型和封闭类型247
12.3.2 泛型类型和继承249
12.3.3 泛型类型同一性251
12.3.4 代码爆炸252
12.4 泛型接口252
12.5 泛型委托253
12.6 委托和接口的逆变和协变泛型类型实参254
12.7 泛型方法256
12.8 泛型和其他成员258
12.9 可验证性和约束259
12.9.1 主要约束261
12.9.2 次要约束262
12.9.3 构造器约束263
12.9.4 其他可验证性问题264
第Ⅲ部分 基本类型267
第13章 接口267
13.1 类和接口继承267
13.2 定义接口268
13.3 继承接口269
13.4 关于调用接口方法的更多探讨271
13.5 隐式和显式接口方法实现(幕后发生的事情)272
13.6 泛型接口274
13.7 泛型和接口约束276
13.8 实现多个具有相同方法名和签名的接口277
13.9 用显式接口方法实现来增强编译时类型安全性278
13.10 谨慎使用显式接口方法实现280
13.11 设计:基类还是接口282
第14章 字符、字符串和文本处理287
14.1 字符287
14.2 System.String类型290
14.2.1 构造字符串290
14.2.2 字符串是不可变的292
14.2.3 比较字符串293
14.2.4 字符串留用298
14.2.5 字符串池301
14.2.6 检查字符串中的字符和文本元素301
14.2.7 其他字符串操作303
14.3 高效率构造字符串304
14.3.1 构造StringBuilder对象304
14.3.2 StringBuilder的成员305
14.4 获取对象的字符串表示:ToString307
14.4.1 指定具体的格式和语言文化308
14.4.2 将多个对象格式成一个字符串311
14.4.3 提供定制格式化器313
14.5 解析字符串来获取对象:Parse315
14.6 编码:字符和字节的相互转换317
14.6.1 字符和字节流的编码和解码322
14.6.2 Base-64字符串编码和解码323
14.7 安全字符串324
第15章 枚举类型和位标志327
15.1 枚举类型327
15.2 位标志332
15.3 向枚举类型添加方法335
第16章 数组337
16.1 初始化数组元素339
16.2 数组转型341
16.3 所有数组都隐式派生自System.Array343
16.4 所有数组都隐式实现IEnumerable,Icollection和IList344
16.5 数组的传递和返回345
16.6 创建下限非零的数组346
16.7 数组的访问性能347
16.8 不安全的数组访问和固定大小的数组351
第17章 委托353
1 7.1 初识委托353
17.2 用委托回调静态方法355
17.3 用委托回调实例方法357
17.4 委托揭秘357
17.5 用委托回调许多方法(委托链)361
17.5.1 C#对委托链的支持365
17.5.2 取得对委托链调用的更多控制365
17.6 委托定义太多(泛型委托)368
17.7 C#为委托提供的简化语法369
17.7.1 简化语法1:不需要构造委托对象369
17.7.2 简化语法2:不需要定义回调方法370
17.7.3 简化语法3:局部变量不需要手动包装到类中即可传给回调方法373
17.8 委托和反射375
第18章 定制attribute379
18.1 使用定制attribute379
18.2 定义自己的attribute类382
18.3 attribute的构造器和字段/属性的数据类型386
18.4 检测定制attribute387
18.5 两个attribute实例的相互匹配391
18.6 检测定制attribute时不创建从Attribute派生的对象393
18.7 条件attribute类396
第19章 可空值类型399
19.1 C#对可空值类型的支持401
19.2 C#的空接合操作符403
19.3 CLR对可空值类型的特殊支持404
19.3.1 可空值类型的装箱404
19.3.2 可空值类型的拆箱405
19.3.3 通过可空值类型调用GetType405
19.3.4 通过可空值类型调用接口方法405
第Ⅳ部分 核心机制409
第20章 异常和状态管理409
20.1 定义“异常”409
20.2 异常处理机制411
20.2.1 try块412
20.2.2 catch块412
20.2.3 finally块414
20.3 System.Exception类417
20.4 FCL定义的异常类420
20.5 抛出异常422
20.6 定义自己的异常类423
20.7 用可靠性换取开发效率425
20.8 指导原则和最佳实践433
20.8.1 善用finally块433
20.8.2 不要什么都捕捉435
20.8.3 得体地从异常中恢复436
20.8.4 发生不可恢复的异常时回滚部分完成的操作——维持状态436
20.8.5 隐藏实现细节来维系契约437
20.9 未处理的异常440
20.10 对异常进行调试444
20.11 异常处理的性能问题446
20.12 约束执行区域(CER)448
20.13 代码契约451
第21章 自动内存管理(垃圾回收)459
21.1 理解垃圾回收平台的基本工作原理459
21.2 垃圾回收算法463
21.3 垃圾回收与调试466
21.4 使用终结操作来释放本地资源469
21.4.1 使用CriticalFinalizerObject类型确保终结470
21.4.2 SafeHandle类型及其派生类型471
21.4.3 使用SafeHandle类型与非托管代码进行互操作473
21.5 对托管资源使用终结操作475
21.6 什么会导致Finalize方法被调用477
21.7 终结操作揭秘478
21.8 Dispose模式:强制对象清理资源481
21.9 使用实现了Dispose模式的类型485
21.10 C#的using语句488
21.11 一个有趣的依赖性问题490
21.12 手动监视和控制对象的生存期491
21.13 对象复活501
21.14 代503
21.15 用于本地资源的其他垃圾回收功能508
21.16 预测需求大量内存的操作能否成功512
21.17 编程控制垃圾回收器513
21.18 线程劫持516
21.19 垃圾回收模式517
21.20 大对象520
21.21 监视垃圾回收520
第22章 CLR寄宿和AppDomain523
22.1 CLR寄宿523
22.2 AppDomain526
22.3 卸载AppDomain538
22.4 监视AppDomain540
22.5 AppDomain FirstChance异常通知541
22.6 宿主如何使用AppDomain541
22.6.1 可执行应用程序542
22.6.2 Microsoft Silverlight富Internet应用程序542
22.6.3 Microsoft ASP.NET Web窗体和XML Web服务应用程序542
22.6.4 Microsoft SQL Server543
22.6.5 更多的用法只局限于你自己的想象力543
22.7 高级宿主控制544
22.7.1 使用托管代码管理CLR544
22.7.2 编写健壮的宿主应用程序544
22.7.3 宿主如何拿回它的线程546
第23章 程序集加载和反射549
23.1 程序集加载549
23.2 使用反射构建动态可扩展应用程序554
23.3 反射的性能555
23.3.1 发现程序集中定义的类型556
23.3.2 类型对象的准确含义556
23.3.3 构建Exception派生类型的一个层次结构558
23.3.4 构造类型的实例560
23.4 设计支持加载项的应用程序562
23.5 使用反射发现类型的成员564
23.5.1 发现类型成员565
23.5.2 BindingFlags:筛选返回的成员种类569
23.5.3 发现类型的接口570
23.5.4 调用类型的成员571
23.5.5 一次绑定,多次调用575
23.5.6 使用绑定句柄来减少进程的内存耗用581
第24章 运行时序列化585
24.1 序列化/反序列化快速入门586
24.2 使类型可序列化590
24.3 控制序列化和反序列化592
24.4 格式化器如何序列化类型实例595
24.5 控制序列化/反序列化的数据597
24.6 流上下文603
24.7 将类型序列化为不同的类型以及将对象反序列化为不同的对象604
24.8 序列化代理606
代理选择器链609
24.9 反序列化对象时重写程序集和/或类型610
第Ⅴ部分 线程处理615
第25章 线程基础615
25.1 Windows为什么要支持线程615
25.2 线程开销616
25.3 停止疯狂620
25.4 CPU发展趋势622
25.5 NUMA架构的机器623
25.6 CLR线程和Windows线程625
25.7 使用专用线程执行异步的计算限制操作625
25.8 使用线程的理由627
25.9 线程调度和优先级629
25.10 前台线程和后台线程634
25.11 继续学习635
第26章 计算限制的异步操作637
26.1 CLR线程池基础638
26.2 执行简单的计算限制操作639
26.3 执行上下文640
26.4 协作式取消642
26.5 任务645
26.5.1 等待任务完成并获取它的结果646
26.5.2 取消任务648
26.5.3 一个任务完成时自动启动一个新任务649
26.5.4 任务可以启动子任务651
26.5.5 任务内部揭秘652
26.5.6 任务工厂653
26.5.7 任务调度器655
26.6 Parallel的静态For,ForEach和Invoke方法657
26.7 并行语言集成查询(PLINQ)660
26.8 执行定时计算限制操作663
26.9 线程池如何管理线程665
26.9.1 设置线程池限制665
26.9.2 如何管理工作者线程666
26.10 缓存线和伪共享667
第27章 I/O限制的异步操作671
27.1 Windows如何执行I/O操作671
27.2 CLR的异步编程模型(APM)675
27.3 AsyncEnumerator类679
27.4 APM和异常682
27.5 应用程序及其线程处理模型683
27.6 异步实现服务器687
27.7 APM和计算限制的操作687
27.8 APM的注意事项689
27.8.1 在没有线程池的前提下使用APM689
27.8.2 总是调用EndXxx方法,而且只调用一次690
27.8.3 调用EndXxx方法时总是使用相同的对象690
27.8.4 为BeginXxx和EndXxx方法使用ref,out和params实参691
27.8.5 不能取消异步I/O限制操作691
27.8.6 内存消耗691
27.8.7 有的I/O操作必须同步完成691
27.8.8 FileStream特有的问题692
27.9 I/O请求优先级693
27.10 将IAsyncResult APM转换为Task695
27.11 基于事件的异步模式696
27.11.1 将EAP转换为Task698
27.11.2 APM和EAP的对比699
27.12 编程模型的泥沼700
第28章 基元线程同步构造703
28.1 类库和线程安全705
28.2 基元用户模式和内核模式构造706
28.3 用户模式构造707
28.3.1 易失构造708
28.3.2 互锁构造713
28.3.3 实现简单的Spin Lock717
28.3.4 Interlocked Anything模式720
28.4 内核模式构造722
28.4.1 Event构造725
28.4.2 Semaphore构造727
28.4.3 Mutex构造728
28.4.4 在一个内核构造可用时调用一个方法730
第29章 混合线程同步构造733
29.1 一个简单的混合锁733
29.2 自旋、线程所有权和递归735
29.3 混合构造的大杂烩737
29.3.1 ManualResetEventSlim类和SemaphoreSlim类737
29.3.2 Monitor类和同步块738
29.3.3 ReaderWriterLockSlim类743
29.3.4 OneManyLock类745
29.3.5 CountdownEvent类747
29.3.6 Barrier类747
29.3.7 线程同步构造小结748
29.4 著名的双检锁技术750
29.5 条件变量模式754
29.6 用集合防止占有锁太长的时间756
29.7 并发集合类760
热门推荐
- 2013242.html
- 3039442.html
- 931688.html
- 2769734.html
- 3403741.html
- 1598141.html
- 573396.html
- 1274066.html
- 216838.html
- 3660924.html
- http://www.ickdjs.cc/book_2797342.html
- http://www.ickdjs.cc/book_3401442.html
- http://www.ickdjs.cc/book_3815552.html
- http://www.ickdjs.cc/book_3519358.html
- http://www.ickdjs.cc/book_887247.html
- http://www.ickdjs.cc/book_2253053.html
- http://www.ickdjs.cc/book_28097.html
- http://www.ickdjs.cc/book_2041017.html
- http://www.ickdjs.cc/book_975774.html
- http://www.ickdjs.cc/book_1314756.html