十载演进,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
《遗传算法:理论应用与软件实现》全面系统地介绍了遗传算法的基本理论,重点介绍了遗传算法的经典应用和国内外的新发展。全书共分
《ODL技术内幕:架构设计与实现原理》内容简介:这是一本从源代码层面深入剖析ODL的著作,旨在帮助读者在透彻理解ODL的先进架构、设
《CMOS集成电路后端设计与实战》内容简介:本书详细介绍整个后端设计流程,分为概述、全定制设计、半定制设计、时序分析四大部分。
《雾都孤儿》内容简介:《雾都孤儿》(1838),又译《奥利弗·退斯特》,是作者的第一部社会小说。作品通过孤儿奥利弗的凄苦遭遇,
《太极拳延缓认知衰退研究:基于脑科学》内容简介:本书旨在揭示太极拳锻炼对改善老年人认知功能的影响及其作用机制。全书内容分三
本书通过对一个社交网络RailsSpace开发过程的介绍,详细地展示了流行的Web应用程序开发框架RubyonRails的配置和使用方法。本书循
东京字体指导俱乐部(TokyoTDC)最佳字体设计揭晓,本书收录了本次大奖所有奖项的作品。东京字体设计俱乐部成立于1987年,在今年
《JavaJDK6学习笔记》是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Ja
《看懂世界格局的第一本书》内容简介:本书用大开大合的笔法将复杂多变的世界全景呈现出来,并从政治经济和地缘政治的角度对以上这
《墙垣边的人类》内容简介:建筑说到底是一种文化,是构成人类文明的一个重要组成部分。本书熔建筑艺术、文化学、史学、哲学和心理
《读懂自己比读懂别人更重要》内容简介:我们说认清一个人,无非就是看清他是好是坏。其实,别人的缺点总是很容易被我们所发现,而
《李国文散文》内容简介:李国文散文,无论抒写对现实人生的思考,还是关注历史上文人的生存状态,字里行间都透出真性情,具有洞明
Flash二维动画制作基础教程 本书特色 本书是中等职业教育电子信息类专业“双证课程”培养方案配套教材,同时也是“CEAC国家信息化计算机教育认证”的指定教材,...
《5G开启万物智能》内容简介:本书重点描述了5G技术的发展历程、特征、应用场景、未来趋势等,剖析了5G在工业、教育、医疗、VR/AR等
《我们的历史:三国两晋南北朝》内容简介:本书家庭是社会的基本细胞,是孩子人生的学校;一个家庭所承袭的优良家风,不仅是个人的
《金圣叹选批杜诗》内容简介:金圣叹选本的特点不仅在于选更在于评,更注重点评和鉴赏。金圣叹首创唐诗“七律分解法”来评点唐诗。
无线技术已成为电信和网络界最热门的研究领域。本书的内容丰富且新颖,包括基本的无线通信原理,以及各种无线网络的协议和应用。
计算机辅助翻译实践 本书特色本书以当前语言服务行业新特点为背景,以职业译员的翻译技术能力为主线,以计算机辅助翻译(computer aided translat...
《团体心理游戏256例》内容简介:心理游戏是一种在团体情境中提供心理帮助与指导的重要方式,它是通过团体内人际交互,促使个体在人
《畅聊科技(第2版)》内容简介:☆SXSW大会两度推介,欧美中学信息技术启蒙读物推动科技民主化,让人人都能读懂区块链、人工智能与