果壳中的C#——C# 5.0权威指南

-
【作 者】[美] Joseph Albahari Ben Al
【I S B N 】978-7-5170-1084-5
【责任编辑】李炎
【适用读者群】科技
【出版时间】2013-08-28
【开 本】16开
【装帧信息】平装(光膜)
【版 次】第1版第1次印刷
【页 数】898
【千字数】1950
【印 张】56
【定 价】¥118
【丛 书】暂无分类
【备注信息】
简介
本书特色
前言
章节列表
精彩阅读
下载资源
相关图书
本书是一本C# 5.0的权威技术指南,也是第一本中文版C# 5.0的学习资料。本书通过26章的内容,系统、全面、细致地讲解了C# 5.0从基础知识到各种高级特性的命令、语法和用法。本书的讲解深入浅出,同时为每一个知识点都专门设计了贴切、简单、易懂的学习案例,从而可以帮助读者准确地理解知识点的含义并快速地学以致用。本书与之前的C# 4.0版本相比,还新增了丰富的并发、异步、动态编程、代码精练、安全、COM交互等高级特性相关的内容。
本书还融汇了作者多年在软件开发及C#方面的研究及其实践经验,非常适合作为C#技术的一本通自学教程,亦是一本中高级C#技术人员不可多得的必备工具书。
©2012 by O’Reilly Media, Inc.
Simplified Chinese Edition, jointly published by O’Reilly Media, Inc. and China Waterpower Press, 2013. Authorized translation of the English edition, 2012 O’Reilly Media, Inc., the owner of all rights to publish and sell the same.
All rights reserved including the rights of reproduction in whole or in part in any form.
英文原版由O’Reilly Media, Inc. 出版2012。
简体中文版由中国水利水电出版社出版 2013。英文原版的翻译得到O’Reilly Media, Inc.的授权。此简体中文版的出版和销售得到出版权和销售权的所有者 —— O’Reilly Media, Inc.的许可。
版权所有,未得书面许可,本书的任何部分和全部不得以任何形式重制。
北京市版权局著作权合同登记号:图字:01-2013-4993号
全面覆盖语法、数据类型、变量等基础知识
深入覆盖不安全代码、类型转换、预处理指令等高级主题;并发、异步、代码契约、动态编程、安全性、COM互操作性等技术;LINQ相关技术;.NET相关的XML、集合、I/O、网络、存储管理、反射、属性、安全及本地互操作性等技术
知识点与案例无缝配合,极大降低学习难度
C# 5.0是微软旗舰编程语言的第4次重大升级,大大提升了C#语言的灵活性与功能。一方面,它实现了一些高级抽象,如查询表达式和异步延续;另一方面,它又通过自定义类型值和可选指针等设计实现了一些底层功能。
这部分增加的特性尤其值得学习。虽然诸如Microsoft的IntelliSense工具和各种在线参考文档在帮助你完成工作方面是非常好用的,但是它们需要由现有的一些概念知识来支撑。本书以简明统一的方式(而非繁杂冗长的介绍)准确到位地阐述了这些知识集。
本书是完全按照概念和用例组织的,因此无论是按顺序阅读还是随意浏览都可以。虽然只要求具备基本的背景知识,但它还是有一定的深度,因此比较适合中高级水平的读者阅读。
本书内容涵盖了C#、CLR和Framework程序集。我们之所以做出这样的选择,是为了重点讲解一些较难理解的主题,如并发性、安全性和应用程序域,同时不影响深度或可读性。C# 5.0及相关Framework的新特性已经被标注清楚,因此也可以将本书作为C# 4.0参考书使用。
目标读者
本书主要针对中高级开发人员。不要求读者具备C#知识,但是需要有一些普通编程经验。对于初学者,本书能够补充教程类编程介绍书籍,但不能替代教程类书籍。
熟悉C# 4.0的读者会发现,我们重写了关于并发性的小节,其中包括深入介绍C# 5.0的异步函数及其相关类型,并且还介绍了异步编程的原则,以及它如何能够提供效率和线程安全性。
本书是各种介绍实用技术图书的理想伴侣,如WPF、ASP.NET或WCF。这些书籍所省略的语言与.NET Framework方面的内容,本书都进行了详细介绍,反之亦然。
这本书并不会详细介绍每一种.NET Framework技术。此外,这本书也不会介绍平板电脑或Windows Phone开发的专用API。
本书的结构
本书前三章集中介绍C#语言,先介绍语法、类型和变量,然后介绍一些高级特性,如不安全代码和预处理指令。如果你是初学者,应该循序渐进地阅读这些章节。
其余各章的内容涵盖核心.NET Framework,包括LINQ、XML、集合、I/O与网络、内存管理、反射、动态编程、属性、安全性、并发、应用域和原生互操作性等主题。除了第6章和第7章之外,你可以按任意顺序阅读,因为这两章是后续主题的基础。关于LINQ的三章内容最好也按顺序阅读。
一些章节要求读者理解并发的基础知识,这部分知识将在第14章介绍。
使用本书所需的其他材料
本书的例子需要使用C# 5.0编译器和微软.NET Framework 4.5。此外,微软的.NET文档可以帮助查找各个类型及其成员(在线版本)。
虽然在记事本中可以编写源代码和从命令执行编译器,但是为了提高效率,最好使用一个代码编辑器即时测试各个代码版本,并且使用集成开发环境(IDE)生成可执行程序和库。
推荐从www.linqpad.net下载LINQPad 4.40或更高版本(免费)作为代码编辑器。LINQPad完全支持C# 5.0,并且由C# 5.0的作者之一维护。
对于IDE,建议下载Microsoft Visual Studio 2012:除了免费的简洁版,其他版本都适合本书介绍的内容。
提示: 第2~10章及并发性、并行编程和动态编程等章节所列代码清单都是可交互(可编辑)的LINQPad示例。
本书中使用的约定
本书使用简单的UML符号来说明类之间的关系,如图P-1所示。斜矩形表示抽象类;圆圈表示一个接口。带空心三角形的线条表示继承,其中三角形指向基类。带箭头的线条表示单向关联;不带箭头的线条表示双向关联。
图P-1: 示例图
本书还使用以下的排版约定:
斜体(Italic)
表示URI、文件名、目录和应该由用户提供的值所替代的文本
等宽字体(Constant Width)
表示C#代码、关键字与标识符以及程序输出
等宽粗体(Constant Width Bold)
突出显示部分代码
使用示例代码
本书的作用是帮助你完成工作。一般而言,你可能会在程序和文档中使用本书所提供的代码。除非必须复制大部分代码,否则不需要联系我们获得授权。例如,你不需要授权就可以使用本书的多个代码段来编写程序;销售或分发O’Reilly书籍中的示例代码CD-ROM也不需要授权;引用本书及其示例代码来回答某个问题也不需要授权;将本书的大量示例应用到你的产品文档中也不需要授权。
我们欢迎你标注内容出处,但不强制要求。一般的标注通常包括书名、作者、出版社和ISBN。例如:“C# 5.0技术手册,作者:Joseph Albahari和Ben Albahari。版权所有 2010 Joseph Albahari和Ben Albahari,ISBN:978-1-449-32010-2”。
如果你认为你的代码示例使用方式超出一般用途或超出了此处的授权范围,请随时与我们联系:permissions@oreilly.com。
Safari ®Books Online
Safari Books Online是一个随需供应的数字图书馆,你可以轻松搜索到7500多种技术和创意参考图书与视频,可以快速帮助你找到问题答案。
订阅后,你可以在图书馆中在线阅读任何页面和观看任何视频。你还可以在手机和移动设备上阅读这些图书。你可以查看未出版的新书,唯一地访问仍在编写中的书稿以及给作者发送反馈信息。你还可以复制和粘贴代码示例、整理收藏夹、下载章节、收藏关键章节、编写注解、打印内容页,以及使用无数其他可以节约时间的特性。
O’Reilly Media已经将本书上传到Safari Books Online服务。想要获得本书或O’Reilly及其他出版商的类似书籍的完整电子版,请先免费注册一个账号:http://my.safaribooksonline.com。
联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商:
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
本书也有相关的网页,我们在上面列出了源代码、范例以及其他一些信息。你可以访问:
http://www.albahari.com/nutshell/(英文版)
对本书做出评论或者询问技术问题,请发送E-mail至:
bookquestions@oreilly.com
希望获得关于本书、会议、资源中心和O’Reilly网络的更多信息,请访问:
http://www.oreilly.com
http://www.oreilly.com.cn
致谢
Joseph Albahari
首先,我要感谢我的兄弟和合著者Ben Albahari,感谢他在最初说服我参与这项后来非常成功的项目。我非常享受与Ben一起探究难题的过程:他不仅与我一样勇于向传统观点提出质疑,而且都具有刨根问底的精神。
我最希望感谢的还有一些优秀的技术审阅者。首先是来自Microsoft的校阅者,Stephen Toub(并行编程团队)和Chris Burrows(C#编译器团队)提供的大量信息显著地增强了关于并发性、动态编程和C#语言等章节的内容。从CLR团队,我收获了来自Shawn Farkas、Brian Grunkemeyer、Maoni Stephens和David DeWinter关于安全性和内存管理方面的非常宝贵的信息。
我极力向读者推荐Jon Skeet(《C# in Depth》的作者以及堆栈溢出的专家),他的许多宝贵建议丰富了许多章节的内容(虽然任职于谷歌公司,但是我们尊重他的选择!)。我也同样感激C# MVP Nicholas Paldino敏锐的眼光,他发现了其他工作人员未发现的一些错误和疏忽。我同时还要感谢另外两位C# MVP:Mitch Wheat和Brian Peek,以及本书所基于的3.0版本的校阅者。这里面包括了前面提到的Nicholas Paldino,他将其博大渊深的知识应用到了本书的大多数章节,以及Krzysztof Cwalina、Matt Warren、Joel Pobar、Glyn Griffiths、Ion Vasilian、Brad Abrams、Sam Gentile和Adam Nathan。
最后,我还要感谢O’Reilly团队,包括行动迅速及非常高效的编辑Laurel Ruma、宣传人员Kathryn Barrett、文字编辑Audrey Doyle以及我的家人Miri和Sonia。
Ben Albahari
由于我的兄弟在我之前写下了他的感言,他所表达的大多数内容也正是我的肺腑之言:事实上,当我们还是孩子的时候,就已经开始编写程序了(我们共用一台Apple IIe;他编写他自己的操作系统,而我则是在编写我的Hangman),因此,现在我们能一起撰写这些书籍是一件非常惬意的事。我希望我们在此书中所浓缩的经验可以丰富读者们的编程经验。
同时,我还要感谢我之前在Microsoft工作时的同事。很多人在那里工作,他们不仅智商高而且情商更高,我怀念与他们共事的时光。我还要特别感谢Brian Beckman,从他的身上我学到了很多。
目标读者 1
本书的结构 1
使用本书所需的其他材料 2
本书中使用的约定 2
使用示例代码 3
联系我们 3
Safari® Books Online 4
致谢 4
第1章 C#和.NET Framework简介 1
1.1 面向对象 1
1.2 类型安全性 1
1.3 内存管理 2
1.4 平台支持 2
1.5 C#与CLR的关系 2
1.6 CLR和.NET Framework 3
1.7 C#与Windows Runtime 4
1.8 C# 5.0新特性 5
1.9 C# 4.0新特性 5
1.10 C# 3.0新特性 5
第2章 C#语言基础 7
2.1 第一个C#程序 7
2.2 语法 9
2.3 类型基础 11
2.4 数值类型 19
2.5 布尔类型和运算符 25
2.6 字符串和字符 27
2.7 数组 29
2.8 变量和参数 32
2.9 表达式和运算符 40
2.10 语句 43
2.11 命名空间 51
第3章 在C#中创建类 57
3.1 类 57
3.2 继承 69
3.3 object类型 76
3.4 结构体 80
3.5 访问权限修饰符 81
3.6 接口 83
3.7 枚举类型 87
3.8 嵌套类型 91
3.9 泛化 92
第4章 C#高级特性 103
4.1 委托 103
4.2 事件 111
4.3 Lambda表达式 117
4.4 匿名方法 120
4.5 try语句和异常 121
4.6 枚举类型和迭代 128
4.7 可空类型 132
4.8 运算符重载 137
4.9 扩展方法 140
4.10 匿名类型 143
4.11 动态绑定 144
4.12 属性 151
4.13 调用者信息属性(C# 5) 152
4.14 不安全代码和指针 154
4.15 预处理指令 157
4.16 XML文档 159
第5章 框架概述 163
5.1 CLR和核心框架 165
5.2 应用技术 168
第6章 框架基础 174
6.1 字符串与文本处理 174
6.2 日期和时间 185
6.3 日期与时区 191
6.4 标准格式字符串与解析标记 202
6.5 其他转换机制 208
6.6 全球化 211
6.7 操作数字 212
6.8 枚举类型 216
6.9 元组 219
6.10 Guid结构体 220
6.11 等值比较 220
6.12 顺序比较 229
6.13 实用类 232
第7章 集合 235
7.1 枚举 235
7.2 ICollection和IList接口 242
7.3 Array类 245
7.4 复制 251
7.5 List、Queue、Stack和Set 252
7.6 字典 259
7.7 可定制的集合和委托 264
7.8 等值和顺序插入 270
第8章 LINQ查询 277
8.1 入门 277
8.2 运算符流语法 279
8.3 查询表达式 285
8.4 延迟执行 289
8.5 子查询 295
8.6 LINQ构造方式 298
8.7 映射策略 301
8.8 解释型的查询 303
8.9 LINQ to SQL 和 Entity Framework 309
8.10 查询表达式的创建 323
第9章 LINQ运算符 328
9.1 概述 329
9.2 筛选 332
9.3 映射 336
9.4 连接 347
9.5 Zip 运算符 355
9.6 排序 355
9.7 Grouping 358
9.8 集合运算符 361
9.9 转换方法 363
9.10 元素运算符 365
9.11 聚合方法 367
9.12 数量词 372
9.13 生成集合的方法 373
第10章 LINQ to XML 375
10.1 架构概述 375
10.2 X-DOM概述 376
10.3 实例化X-DOM 379
10.4 指定内容 380
10.5 导航和查询 381
10.6 更新X-DOM 386
10.7 使用Value 389
10.8 文档和声明 391
10.9 名称和命名空间 394
10.10 注解 400
10.11 将数据映射到X-DOM 400
第11章 其他XML技术 407
11.1 XmlReader 407
11.2 XmlWriter 415
11.3 使用XmlReader/XmlWriter的模式 417
11.4 XmlDocument 421
11.5 XPath 424
11.6 XSD和模式验证 428
11.7 XSLT 431
第12章 销毁和垃圾回收 432
12.1 IDisposable接口、Dispose方法和Close方法 432
12.2 自动垃圾回收 436
12.3 终止器 438
12.4 垃圾回收器如何工作 442
12.5 托管内存泄露 445
12.6 弱引用 448
第13章 诊断和代码契约 452
13.1 条件编译 452
13.2 Debug和Trace类 455
13.3 代码契约概述 458
13.4 先决条件 461
13.5 后置条件 465
13.6 断言和对象不变式 467
13.7 接口和抽象方法中的契约 468
13.8 处理契约错误 469
13.9 选择性执行契约 471
13.10 静态契约检查 472
13.11 调整器集成 473
13.12 进程和处理线程 474
13.13 StackTrace和StackFrame类 475
13.14 Windows事件日志 476
13.15 性能计数器 478
13.16 Stopwatch类 483
第14章 并发与异步 484
14.1 简介 484
14.2 线程处理 485
14.3 任务 498
14.4 异步原则 506
14.5 C# 5.0的异步函数 510
14.6 异步模式 523
14.7 旧模式 530
第15章 流与I/O 533
15.1 流体系结构 533
15.2 使用流 534
15.3 流适配器 546
15.4 压缩流 553
15.5 操作Zip文件 555
15.6 文件与目录操作 555
15.7 Windows Runtime中的文件输入/输出 565
15.8 内存映射文件 567
15.9 隔离存储区 569
第16章 网络 575
16.1 网络体系结构 575
16.2 地址与端口 577
16.3 URI 578
16.4 客户端类 579
16.5 HTTP访问 591
16.6 编写HTTP服务器 596
16.7 使用FTP 599
16.8 使用DNS 600
16.9 通过SmtpClient发送邮件 601
16.10 使用TCP 602
16.11 使用TCP接收POP3邮件 605
16.12 在Windows Runtime中建立TCP连接 606
第17章 序列化 608
17.1 序列化概念 608
17.2 数据契约的序列化 611
17.3 数据契约与集合 620
17.4 扩展数据契约 622
17.5 二进制序列化器 625
17.6 二进制序列化属性 627
17.7 使用ISerializable进行二进制序列化 629
17.8 XML序列化 632
第18章 程序集 641
18.1 程序集包含的内容 641
18.2 强名称和程序集签名 645
18.3 程序集名称 647
18.4 Authenticode签名 649
18.5 全局程序集高速缓存 652
18.6 资源和卫星程序集 654
18.7 解析和加载程序集 661
18.8 在基础文件夹外部署程序集 665
18.9 打包单个可执行文件 667
18.10 处理未引用的程序集 668
第19章 反射和元数据 670
19.1 反射和激活类型 670
19.2 反射和调用成员 677
19.3 反射程序集 688
19.4 使用属性 689
19.5 动态生成代码 694
19.6 发出程序集和类型 700
19.7 发出类型成员 703
19.8 发出泛型方法和类型 708
19.9 复杂的发出目标 710
19.10 解析IL 713
19.11 编写反编译器 713
第20章 动态编程 718
20.1 动态语言运行时 718
20.2 数字类型统一 719
20.3 动态成员重载解决方案 720
20.4 实现动态对象 726
20.5 通过动态语言交互操作 729
第21章 安全 731
21.1 权限 731
21.2 代码访问安全(CAS) 734
21.3 允许部分可信的调用程序 737
21.4 CLR 4.0中的透明模型 739
21.5 沙箱化程序集 746
21.6 操作系统安全 749
21.7 身份和角色安全 751
21.8 加密综述 752
21.9 Windows数据保护 753
21.10 散列法 754
21.11 对称加密 755
21.12 公共密钥加密和签名 759
第22章 高级线程 763
22.1 同步概述 763
22.2 排他锁 764
22.3 锁与线程安全性 771
22.4 非排他锁 775
22.5 使用事件等待处理器发送信号 780
22.6 Barrier类 787
22.7 延后初始化 788
22.8 线程本地存储 790
22.9 Interrupt和Abort 792
22.10 Suspend和Resume 793
22.11 定时器 793
第23章 并行编程 797
23.1 PFX 797
23.2 PLINQ 799
23.3 Parallel类 810
23.4 任务并行 816
23.5 处理AggregateException异常 825
23.6 并发集合 827
23.7 BlockingCollection
第24章 应用域 833
24.1 应用域架构 833
24.2 创建和销毁应用域 833
24.3 多应用域的使用 836
24.4 DoCallBack的应用 837
24.5 应用域的监视 838
24.6 应用域和线程 838
24.7 应用域间通信 839
第25章 本地化和COM组件交互 844
25.1 调用本地库 844
25.2 类型封送 845
25.3 非托管代码的回调函数 847
25.4 模拟C共用体 848
25.5 内存共享 849
25.6 映射结构体到非托管内存区 851
25.7 COM交互 854
25.8 在C#中调用COM对象 856
25.9 内嵌互操作类型 859
25.10 主互操作程序集 859
25.11 COM中调用C#对象 860
第26章 正则表达式 861
26.1 正则表达式基础 861
26.2 量词 865
26.3 零宽度断言 866
26.4 分组 869
26.5 文本替换和拆分 870
26.6 正则表达式实例 871
26.7 正则表达式语言参考 874
- C程序设计实践教程 [刘卫国]
- C程序设计(慕课版) [刘卫国]
- 程序设计基础实践教程(C/C++语言版) [张桂芬 葛丽娜]
- C++案例项目精讲 [主编 杨国兴]
- SwiftUI完全开发 [李智威 著]
- MySQL数据库项目式教程 [陈亚峰]
- C语言程序设计习题与实验指导(第二版) [主编 甄增荣 张宾]
- C语言程序设计(第二版) [主编 甄增荣 田云霞]
- Unity3D虚拟现实应用开发实践 [主 编 刘龙]
- Python程序设计 [主编 姜春磊 陈虹洁]
- C语言程序设计实践教程(活页式) [主编 郑茵 陈巍 滕泓虬]
- 面向对象程序设计 [主编 张勇 张平华 赵小龙]
- Python程序设计基础及实战 [主编 刘健]
- C语言程序设计 [姜雪]
- Python程序设计实践教程 [王鹤琴 蔡正保]
- C++程序设计实践教程(第三版) [主编 刘卫国 曹岳辉]
- C++程序设计(第三版) [主编 曹岳辉 刘卫国]
- C语言程序设计项目化教程(活页式) [主编 张利华 潘晓利]
- 机器人流程自动化(RPA)实战——基于UiPath [主编 金鑫]
- Python 语言程序设计实践指导 [主编 张双狮]
- Python程序设计案例教程 [主编 毛锦庚 钟肖英 周贤来 ]
- 基于.NET Core框架的分布式系统架构设计 [汤佳 著]
- Python语言程序设计教程 [郭其标 房宜汕]
- C语言同步案例习题精解 [主编 肖朝晖]
- Python程序设计 [李国燕 王新强 刘佳 等编著]
- Python程序设计项目化教程(活页式) [主编 卢凤伟]
- Java编程基础案例式教程 [主编 陈艳华 唐春兰]
- Python语言同步案例习题精解 [主编 肖朝晖]
- Unity应用开发与实战(微课版) [主 编 程永恒]
- PHP程序设计项目化教程 [主 编 杜海颖]