热门关键字:  听力密码  听力密码  新概念美语  单词密码  巧用听写练听力

果壳中的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 829
    第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
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册