十载演进,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
《Node.js实战(双色)》通过8个实例讲解了Node.js在实战开发中的应用,涉及Node.js常用框架、非关系型数据库、关系型数据库、运
《潜资源:管理者用人的14种手段》内容简介:俗话说,“宰相肚子能行船”,如果一个人有接纳庸俗的气度和宽恕他人的雅量,不自命清
互联网接入服务现状及管理对策研究 本书特色这是一部全面系统探讨互联网接入服务现状及管理对策的研究专著。佟力强编写的《互联网接入服务现状及管理对策研究》从介绍互联...
在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛。本书是C语言的设计者之一DennisM.Ritchie和著名计算机科学家
《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《And
《区块链去中心化金融》内容简介:本书包括十余个典型性的区块链上分布式金融项目的案例,以“模式-场景-工作机制-性能-创新性”的
《来世》内容简介:★2021年诺奖得主古尔纳2020年重磅新作,代表着他最新的创作成就 ★一片失落大陆上的聚散与悲欢,一部几代人的传
《公路上的美丽心灵》内容简介:《公路上的美丽心灵》是中国第一本以卡车司机群体为主体创作的文学作品集。中国有3000万卡车司机,
深度学习与人体姿态动作识别/关晨至 内容简介 本书主要阐述了深度学习下人体姿态动作识别的相关技术和方法。全书共六章,章介绍了深度学习的发展历史;第二章介绍了各种...
Theinternethasbecomeembeddedintoourdailylives,nolongeranesotericphenomenon,butin...
《代码的未来》是Ruby之父松本行弘的又一力作。作者对云计算、大数据时代下的各种编程语言以及相关技术进行了剖析,并对编程语言
《全彩电工从入门到精通(微视频版)》内容简介:本书以“全彩+图解+视频”的方式介绍电工技术,主要内容有电工基础与安全用电、电
《软件开发的201个原则》内容简介:本书汇总了软件工程原则。原则是关于软件工程的基本原理、规则或假设,不管所选的技术、工具或语
支持向量机鲁棒性模型与算法研究 本书特色 支持向量机是基于统计学习理论,以结构风险*小化为原则的一种针对小样本情况的新型机器学习方法,具有结构简单、全局*解和泛...
《财务共享的智能化升级:业财税一体化的深度融合》内容简介:财务共享是数字技术和管理变革的共同产物,是解决企业规模不断扩大的
尼可拉斯.卡爾(NicholasG.Carr)知名作家兼思想家,專研商業策略、資訊科技及兩者的交叉點,在《哈佛商業評論》寫過包括〈IT沒有
《PLC编程实用指南(第3版)》内容简介:本书围绕PLC用于顺序控制、脉冲量控制、模拟量控制、通信及数据处理五大主题,对欧姆龙、西
与传统的用户应用程序开发不同,内核环境更加复杂多变,任何问题都会严重影响系统的稳定性、安全性和性能,所以一定要确保内核代
本书对UNIX操作系统的编程环境做了详细而深入的讨论,内容包括UNIX的文件系统、Shell、过滤程序、I/O编程、系统调用等,并对UNIX
本书是作者在美国、瑞士的ArtCebter研读设计,以及长期在美国和中国大陆从事产品设计工作的经验总结。书籍内容丰富,图文并茂,信