More Effective C#中文版:改善C#程序的50个具体办法(奋斗的小鸟)_PDF 电子书

来源:互联网 发布:软件大道附近租房 编辑:程序博客网 时间:2024/06/13 18:06

More Effective C#中文版:改善C#程序的50个具体办法

 

下载地址:http://pan.baidu.com/share/link?shareid=1498988824&uk=721744522

 

内容简介

  《More Effective C#中文版:改善C#程序的50个具体办法》延续了Effective系列图书的风格,针对C# 2.0和C# 3.0中添加的新特性给出了实用的建议。书中的50个条目自成一体且又丝丝相扣,这些条目按照泛型、多线程开发、C#设计模式、C# 3.0语言增强、LINQ以及杂项等主题分为6类,将特定的代码和深入的分析有机地结合了起来,能够帮助你以最佳的方式从C# 1.x切换至C# 3.0。当你通读全书之后,会发现不只得到了一条条独立的建议,还学到了如何以优雅的方式用C#进行程序设计。
  《More Effective C#中文版:改善C#程序的50个具体办法》适合具有C#编程经验的.NET开发人员阅读。
 

作者简介

  瓦格纳(Bill Wagner),拥有超过25年的软件开发经验。世界知名的.NET专家。微软C#MVP。并荣获微软Regional Director称号。他是著名软件咨询公司SRT Solutions的创始人。曾经领导了众多成功的Windows平台产品的开发。他是微软开发社区的活跃人物,长期担任MSDN Magazine、ASRNETPro、Visual Studio Magazine等技术杂志的专栏作者。他还是畅销书《Effective C#中文版》(人民邮电出版社,2007)的作者。他的博客是http://srtsolutions.com/blogs/billwagner。可以通过bill.wagner@srtsolutions.com与他联系。
  译者简介:
  陈黎夫,毕业于上海交通大学计算机科学专业。有多年业界经验,曾在微软、EMC等公司任职,现任某创业技术公司CTO。专注于微软技术与LAMP开发平台。并连续3年荣获微软MVP称号。有多本计算机领域内著作/译作出版。内容涵盖CSS、A.JAX、ASP.NET、C#、LINQ和.NET平台架构等多个方面。可以通过dflyingchen@gmail.com与他联系。

 

目录

第1章 使用泛型 1
条目1:使用1.x框架API的泛型版本 4
条目2:恰到好处地定义约束 14
条目3:运行时检查泛型参数的类型并提供特定的算法 19
条目4:使用泛型强制编译期类型推断 26
条目5:确保泛型类型支持可销毁对象 32
条目6:使用委托定义类型参数上的方法约束 36
条目7:不要为基类或接口创建泛型的特殊实现 42
条目8:尽可能使用泛型方法,除非需要将类型参数用于实例的字段中 46
条目9:使用泛型元组代替out和ref参数 50
条目10:在实现泛型接口的同时也实现传统接口 56

第2章 C#中的多线程 63
条目11:使用线程池而不是创建线程 67
条目12:使用BackgroundWorker实现线程间通信 74
条目13:让lock()作为同步的第一选择 78
条目14:尽可能地减小锁对象的作用范围 86
条目15:避免在锁定区域内调用外部代码 90
条目16:理解Windows窗体和WPF中的跨线程调用 93

第3章 C#设计实践 105
条目17:为序列创建可组合的API 105
条目18:将遍历和操作、谓词以及函数分开 112
条目19:根据需要生成序列中的元素 117
条目20:使用函数参数降低耦合 120
条目21:让重载方法组尽可能清晰、最小化且完整 127
条目22:定义方法后再重载操作符 134
条目23:理解事件是如何增加对象间运行时耦合的 137
条目24:仅声明非虚的事件 139
条目25:使用异常来报告方法的调用失败 146
条目26:确保属性的行为与数据类似 150
条目27:区分继承和组合 156

第4章 C# 3.0语言增强 163
条目28:使用扩展方法增强现有接口 163
条目29:使用扩展方法增强现有类型 167
条目30:推荐使用隐式类型局部变量 169
条目31:使用匿名类型限制类型的作用域 176
条目32:为外部组件创建可组合的API 180
条目33:避免修改绑定变量 185
条目34:为匿名类型定义局部函数 191
条目35:不要在不同命名空间中声明同名的扩展方法 196

第5章 使用LINQ 201
条目36:理解查询表达式与方法调用之间的映射 201
条目37:推荐使用延迟求值查询 213
条目38:推荐使用lambda表达式而不是方法 218
条目39:避免在函数或操作中抛出异常 222
条目40:区分早期执行和延迟执行 225
条目41:避免在闭包中捕获昂贵的外部资源 229
条目42:区分IEnumerable和IQueryable数据源 242
条目43:使用Single()和First()来明确给出对查询结果的期待 247
条目44:推荐保存Expression<>而不是Func<> 249

第6章 杂项 255
条目45:最小化可空类型的可见范围 255
条目46:为部分类的构造函数、修改方法以及事件处理程序提供部分方法 261
条目47:仅在需要parms数组时才使用数组作为参数 266
条目48:避免在构造函数中调用虚方法 271
条目49:考虑为大型对象使用弱引用 274
条目50:使用隐式属性表示可变但不可序列化的数据 277