欢迎光临本店     登录 注册   加入收藏
  •   
欢迎光临清华大学出版社第三事业部!

此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

当前位置: 首页 > 科技 > 计算机与网络 > 程序语言与软件开发 > CLR via C#:第4版

浏览历史

CLR via C#:第4版

CLR via C#:第4版

prev next

  • 商品货号:20141030004
  • 所属系列:C语言—程序设计
    商品重量:0克
    作者:(美)李希特(Richter, J.)著,周靖译
    出版社:清华大学出版社
    图书书号/ISBN:9787302380979
    出版日期:2015年1月
    开本:16开
    图书页数:748
    图书规格:185×260
    版次:4-1
    印张:46.75
    字数:1021千字
  • 上架时间:2014-10-30
    商品点击数:937
  • 定价:¥109.00元
    本店售价:¥109.00元
    注册用户:¥109.00元
    vip:¥103.55元
    黄金等级:¥98.10元
    用户评价: comment rank 5
  • 商品总价:
  • 购买数量:

内容简介:

商品附加资源

内 容 简 介
本书针对CLR.NET Framework 4.5进行深入、全面的探讨,并结合实例介绍了如何利用它们进行设计、开发和调试。全书5部分共29章。第Ⅰ部分介绍CLR基础,第Ⅱ部分解释如何设计类型,第Ⅲ部分介绍基本类型,第Ⅳ部分以核心机制为主题,第Ⅴ部分重点介绍线程处理。
通过本书的阅读,读者可以掌握CLR.NET Framework的精髓,轻松、高效地创建高性能应用程序。
© 2014 Tsinghua University Press Limited
Authorized translation of the English edition of Microsoft CLR via C#, 4th Edition.
Copyright © 2012 by Jeffrey Richter. This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls of all rights to publish and sell the same.
前    言
1999年10月,Microsoft的一些人首次向我展示了Microsoft .NET Framework、公共语言运行时(CLR)和C#编程语言。看到这一切时,我惊呆了,我知道我写软件的方式要发生非常大的变化了。他们请我为团队做一些顾问工作,我当即同意了。刚开始,我以为.NET Framework是Win32 API和COM上的一个抽象层。但随着我投入越来越多的时间研究,我意识到它是一个更宏伟的项目。某种程度上,它是自己的操作系统。有自己的内存管理器,自己的安全系统,自己的文件加载器,自己的错误处理机制,自己的应用程序隔离边界(AppDomain)、自己的线程处理模型等。本书解释了所有这些主题,帮你为这个平台高效地设计和实现应用程序和组件。
我写这本书是2012年10月,距离首次接触.NET Framework和C#正好13年。13年来, 我以Microsoft顾问身份开发过各式各样的应用程序,为.NET Framework本身也贡献良多。作为我自己公司Wintellect(http://Wintellect.com)的合伙人,我还要为大量客户工作,帮他们设计、调试、优化软件以及解决使用.NET Framework时遇到的问题。正是因为有了这些资历,所以我才知道如何用.NET Framework进行高效率编程。贯穿本书所有主题,你都会看到我的经验之谈。
本书面向的读者
本书旨在解释如何为.NET Framework开发应用程序和可重用的类。具体地说,我要解释CLR的工作原理及其提供的功能,还要讨论Framework Class Library(FCL)的各个部分。没有一本书能完整地解释FCL——其中含有数以千计的类型,而且这个数字正在以惊人速度增长。所以,我准备将重点放在每个开发人员都需要注意的核心类型上面。另外,虽然不会专门讲Windows窗体、Windows Presentation Foundation(WPF)、Microsoft Silverlight、XML Web服务、Web窗体、Microsoft ASP.NET MVC、Windows Store应用等,但本书描述的技术适用于所有这些应用程序类型。
本书围绕Microsoft Visual Studio 2012/2013,.NET Framework 4.5.x和C# 5.0展开。由于Microsoft在发布这些技术的新版本时,会试图保持很大程度的向后兼容性,所以本书描述的许多内容也适合之前的版本。所有示例代码都用C#编程语言写成。但由于CLR可由许多编程语言使用,所以本书内容也适合非C#程序员。
我和我的编辑进行了艰苦卓绝的工作,试图为你提供最准确、最新、最深入、最容易阅读和理解、没有错误的信息。但是,即便有如此完美的团队协作,疏漏和错误也在所难免。如果你发现了本书的任何错误或者想提出一些建设性的意见,请发送邮件到JeffreyR@Wintellect.com
 
目    录
第I部分  CLR基础
第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.exe 17
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
第Ⅱ部分  设计类型
第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和OptionalAttribute 188
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.10  谨慎使用显式接口方法实现 271
13.11  设计:基类还是接口 274
第Ⅲ部分  基 本 类 型
第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  获取对象的字符串表示:ToString 299
14.4.1  指定具体的格式和语言文化 299
14.4.2  将多个对象格式化成一个字符串 303
14.4.3  提供定制格式化器 304
14.5  解析字符串来获取对象:Parse 306
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.Array 335
16.4  所有数组都隐式实现IEnumerable,ICollection和IList 336
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  通过可空值类型调用GetType 395
19.3.4  通过可空值类型调用接口方法 395
第Ⅳ部分  核 心 机 制
第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寄宿和AppDomain 489
22.1  CLR寄宿 489
22.2  AppDomain 491
跨越AppDomain边界访问对象 494
22.3  卸载AppDomain 504
22.4  监视AppDomain 505
22.5  AppDomain FirstChance异常通知 507
22.6  宿主如何使用AppDomain 507
22.6.1  可执行应用程序 507
22.6.2  Microsoft Silverlight富Internet应用程序 508
22.6.3  Microsoft ASP.NET和XMLWeb服务应用程序 508
22.6.4  Microsoft SQL Server 509
22.6.5  更多的用法只局限于想象力 509
22.7  高级宿主控制 509
22.7.1  使用托管代码管理CLR 509
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 API 575
25.2.2  WInRT流和.NET流之间的互操作 579
25.2.3  在CLR和WinRT之间传输数据块 580
25.3  用C#定义WinRT组件 583
第Ⅴ部分  线 程 处 理
第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

商品标签

购买记录(近期成交数量0)

还没有人购买过此商品
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
评价等级:
评论内容:
验证码: captcha