十载演进,C#日渐强大,新增了泛型、函数式编程概念,以及对静态类型和动态类型的支持,而大量新兴编程习惯背后,却是种种具有迷惑性的“陷阱”,Bill Wagner将以此书帮您避免C#语言和.NET环境中的“陷阱”。
本书充分挖掘了C# 4.0的强大功能,并给出了简明、精确表达设计的50个实用方法。书中用大量代码示例,以50个条目条分缕析,为实际应用给出了清晰、专业、实用的建议,阐述了C#语言和.NET框架的方方面面,包括类型、资源管理、动态类型和多核支持。
本书主要内容包括:利用编译期常量和运行时常量提高效率和可维护性(条目2);探索常量类型以促进多核处理(条目20);最小化垃圾收集、装箱和拆箱操作(条目16和条目45);探索接口和委托的强大功能(条目22至条目25);探索并行算法的魔力(条目35至条目37);使用“鸭子类型”(条目38);利用表达式API替代反射API(条目42和条目43);利用查询表达式替代循环(条目8);支持泛型协变和逆变(条目29);使用可选参数减少方法重载(条目10)。
第1章 C#语言习惯 1
条目1 使用属性而不是可访问的数据成员 1
条目2 用运行时常量(readonly)而不是编译期常量(const) 7
条目3 推荐使用is或as操作符而不是强制类型转换 11
条目4 使用Conditional特性而不是#if条件编译 19
条目5 为类型提供ToString()方法 26
条目6 理解几个等同性判断之间的关系 33
条目7 理解GetHashCode()的陷阱 41
条目8 推荐使用查询语法而不是循环 47
条目9 避免在API中使用转换操作符 51
条目10 使用可选参数减少方法重载的数量 55
条目11 理解短小方法的优势 59
第2章 .NET资源管理 63
条目12 推荐使用成员初始化器而不是赋值语句 67
条目13 正确地初始化静态成员变量 70
条目14 尽量减少重复的初始化逻辑 72
条目15 使用using和try/finally清理资源 79
条目16 避免创建非必要的对象 85
条目17 实现标准的销毁模式 89
条目18 区分值类型和引用类型 94
条目19 保证0为值类型的有效状态 99
条目20 保证值类型的常量性和原子性 103
第3章 使用C#表达设计 111
条目21 限制类型的可见性 112
条目22 通过定义并实现接口替代继承 115
条目23 理解接口方法和虚方法的区别 123
条目24 用委托实现回调 127
条目25 用事件模式实现通知 130
条目26 避免返回对内部类对象的引用 137
条目27 让类型支持序列化 140
条目28 提供粗粒度的因特网服务API 148
条目29 支持泛型协变和逆变 152
第4章 使用框架 158
条目30 使用覆写而不是事件处理函数 158
条目31 使用IComparable〈T〉和IComparer〈T〉实现顺序关系 161
条目32 避免使用ICloneable接口 168
条目33 仅用new修饰符处理基类更新 171
条目34 避免重载基类中定义的方法 175
条目35 PLINQ如何实现并行算法 179
条目36 理解PLINQ在I/O密集场景中的应用 189
条目37 注意并行算法中的异常 193
第5章 C#中的动态编程 199
条目38 理解动态类型的优劣 199
条目39 使用动态类型表达泛型类型参数的运行时类型 207
条目40 将接受匿名类型的参数声明为dynamic 210
条目41 用DynamicObject或IDynamicMetaObjectProvider实现数据驱动的动态类型 213
条目42 如何使用表达式API 223
条目43 使用表达式将延迟绑定转换为预先绑定 229
条目44 尽量减少在公有API中使用动态对象 234
第6章 杂 项 240
条目45 尽量减少装箱和拆箱 240
条目46 为应用程序创建专门的异常类 243
条目47 使用强异常安全保证 248
条目48 尽量使用安全的代码 257
条目49 实现与CLS兼容的程序集 260
条目50 实现小尺寸、高内聚的程序集 265
《门岭怪谈》内容简介:深夜两点整,暴雨不期而至,一行人在高速公路上迷失方向,偶然走进一间荒村旅店。命运的巨眼在黑雾中缓缓睁
设计的实质是什么?在设计中,意念和多种多样的形工之间的关系究竟是怎么样?诸如此类的问题,当代设计大师靳埭强选择是如何思考
《川味人间》内容简介:本书是央视热映大型美食纪录片《川味》顾问曾颖最新力作。作者用54道菜肴,30余幅手绘画,书写舌尖上的人间
本书的构思和写作是在20世纪50年代后期,那一时期曾经被人们称为喷气机时代、清洁剂时代、第二次工业革命时期,等等。在那个阶段
喧嚣商战,细数李彦宏与新浪、网易、搜狐、淘宝掌门人的恩怨纠葛!风云起伏,独创划分十年百度的“三大帝国”断代史!独门秘籍,
机器人爱好者-第2辑 本书特色 本书是美国机器人杂志《Servo》精华内容的合集。 全书根据主题内容的相关性,进行了精选和重新组织,分为5章。 第1章介绍了机器...
《亲子关系:决定孩子一生幸福的密码》内容简介:本书主要分为“好的亲子关系是家庭教育成功的基石”、“父母心中的亲子关系困惑”
《看得懂的金融投资课》内容简介:什么是货币?什么是金融?你要怎么做才能获得更高的、更稳健的投资收益,更好地分析投资的风险,
《傅雷谈达·芬奇》内容简介:本书选取傅雷讨论达·芬奇艺术的文章,并选择达·芬奇最有代表性的绘画、素描作品,加上内容详实的作
StevenJohnMetsker是DominionDigital公司的管理顾问,该公司负责信息技术与商业过程的重新设计。Steven擅长运用面向对象技术构建
Java Script&Dynamic HTML 语法辞典 内容简介 本书实例主要在windows vista、internet explorer7.0、fir...
NeedtoLearnMATLAB?ProblemSOLVED!GetstartedusingMATLABrightawayw...
当你觉得似乎学会网络设计的时候,真的是掌握了这些基本原理了吗?为什么有些源代码非记述不可?如果不写会怎样?只有搞清楚这些
Adobe Photoshop CS6中文版经典教程-(彩色版)-(附光盘) 本书特色 《adobe photoshop cs6中文版经典教程(附光盘彩色版)》...
《软件自动化测试实战解析:基于Python3编程语言》内容简介:本书尽量用生活化的场景来描述编程场景,避免正确但是晦涩的表达,避免
【编辑推荐】资深数据库管理专家30余年经验结晶,全面阐释数据库管理的各种技术问题与解决方法;实战性强,包含大量典型数据管理
ThisbookprovidesacomPrehensive,modemaPproachtosignalsandsystems,concentfatingont...
《私域流量池》内容简介:本书是私域流量领域具有权威性和实战性的运营教科书,是作者在2年多的时间里成功指导3万余家企业实现最大
C语言参悟之旅 本书特色 全书共分11章,系统详尽地介绍了c语言程序设计的基本方法,主要包括程序设计与c语言概述,数据及数据类型,运算符、表达式和语句,流程控制...
CiscoIPv6网络实现技术 本书特色 本书面向企业和提供商市场的专业人员,如规划人员、网络设计者、系统工程师、网络经理、管理员以及任何技术人员。本书是一本中...