More Effective C#--改善C#程序的50个具体办法(英文影印版)(50个具体办法助你编出优雅的C#程序)
基本信息
- 作者: (美)Bill Wagner
- 丛书名: 图灵程序设计丛书 C#与.NET系列
- 出版社:人民邮电出版社
- ISBN:9787115215109
- 上架时间:2009-11-19
- 出版日期:2009 年11月
- 开本:16开
- 页码:297
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C#
编辑推荐
英文原文让你和世界知名.NET专家,微软C#MVP Bill Wagner零距离接触,并肩思考和工作
50个具体办法助你编出优雅的C#程序
针对C#2.0和C#3.0中添加的新特性给出实用建议,着重介绍泛型技术,讨论如何使用C#3.0及LINQ查询语法
深入分析示例代码让你快速领悟其中含义,快速应用到你的开发中
内容简介回到顶部↑
本书针对c# 2.0和3.0中添加的新特性给出了改善c#代码的50条实用建议,其中着重介绍了泛型技术,这是c# 2.0和3.0中众多新特性的基石。本书按照建议的主题进行分类,其中每个建议针对某个特定问题进行展开,分析了问题的原因,给出解决的办法。
本书适合各层次.net开发人员阅读。
本书适合各层次.net开发人员阅读。
作译者回到顶部↑
目录回到顶部↑
chapter 1. working with generics
item 1. use generic replacements of 1.x framework api classes
item 2. define constraints that are minimal and sufficient
item 3. specialize generic algorithms using runtime type checking
item 4. use generics to force compile-time type inference
item 5. ensure that your generic classes support disposable type parameters
item 6. use delegates to define method constraints on type parameters
item 7. do not create generic specialization on base classes or interfaces
item 8. prefer generic methods unless type parameters are instance fields
item 9. prefer generic tuples to output and ref parameters
item 10. implement classic interfaces in addition to generic interfaces
chapter 2. multithreading in c#
item 11. use the thread pool instead of creating threads
item 12. use backgroundworker for cross-thread communication
item 13. use lock() as your first choice for synchronization
item 14. use the smallest possible scope for lock handles
item 15. avoid calling unknown code in locked sections
item 16. understand cross-thread calls in windows forms and wpf
chapter 3. c# design practices
item 17. create composable apis for sequences
item 1. use generic replacements of 1.x framework api classes
item 2. define constraints that are minimal and sufficient
item 3. specialize generic algorithms using runtime type checking
item 4. use generics to force compile-time type inference
item 5. ensure that your generic classes support disposable type parameters
item 6. use delegates to define method constraints on type parameters
item 7. do not create generic specialization on base classes or interfaces
item 8. prefer generic methods unless type parameters are instance fields
item 9. prefer generic tuples to output and ref parameters
item 10. implement classic interfaces in addition to generic interfaces
chapter 2. multithreading in c#
item 11. use the thread pool instead of creating threads
item 12. use backgroundworker for cross-thread communication
item 13. use lock() as your first choice for synchronization
item 14. use the smallest possible scope for lock handles
item 15. avoid calling unknown code in locked sections
item 16. understand cross-thread calls in windows forms and wpf
chapter 3. c# design practices
item 17. create composable apis for sequences
前言回到顶部↑
自从 Anders Hejlsberg在 2005年专业开发者大会上第一次演示 LINQ(Language-Integrated Query,语言集成查询)以来,C#编程世界被彻底地改变了。LINQ的出现为 C#语言带来了几个令人着迷的新特性:扩展方法、局部变量类型推断、lambda表达式、匿名类型、对象初始化器以及集合初始化器。C# 2.0也为 LINQ的出现打下了坚实的基础,添加了包括泛型、迭代器、静态类、可空类型、属性访问器权限以及匿名委托等新功能。即使在非 LINQ的使用环境中,这些语言特性也有大显身手之处 ——毕竟还有很多非数据访问的编程任务。.
本书针对 C# 2.0和 C#3.0中添加的新特性给出了实用的建议,也包含了我在上本图书 Effective C#: 50 Specific Ways to Improve Your C#(Addison-Wesley, 2004)中没有提到的高级特性。本书中的条目主要针对那些正在使用 C# 3.0编写程序的开发人员。书中着重介绍了泛型技术,这是 C# 2.0和 C# 3.0中众多新特性的基石。本书中的条目并没有按照语言特性组织,而是根据新特性最善于解决的编程问题来编排的。与 Effective Software Development丛书中的其他图书一样,本书中每个条目的建议都自成一体,针对使用 C#时的某个特定问题。这些条目能够帮助你以最佳的方式从 C# 1.x切换至 C# 3.0。
泛型是 C#3.0中所有新特性的基础。虽然只有第 1章专门介绍了泛型,但你会发现泛型技术也几乎是每个条目中不可分割的一部分。阅读本书之后,你定会熟悉并喜欢上泛型以及元编程(metaprogramming)概念。
当然,本书中的很大一部分篇幅都用来讨论了如何使用 C# 3.0以及 LINQ查询语法。不过不管你是否将其用在查询数据源上,C# 3.0所添加的众多语言新特性均非常有用。语言上的改变非常巨大,LINQ又是引起改变的主要原因,它们都需要专门的章进行介绍。LINQ和 C# 3.0将深刻影响你编写 C#代码的方式,而本书则会让这个过渡更加平稳简单。
读者对象
本书是为那些使用 C#进行软件设计的专业开发人员所编写。本书假定你已对 C# 2.0和 C# 3.0有了一定的了解。Scott Meyers告诉我说,Effective系列
图书应该作为开发人员的针对某一主题学习的进阶参考资料。因此,本书中并没有泛泛介绍任何有关语言的新特性,而是着重阐述如何将这些新特性应用到正在开发的软件中。你将会学到,何时该在开发中使用这些新语言特性,以及如何避免误用所造成的问题。
除了对 C#语言新特性有一定了解之外,你还应该对组成 .NET Framework的主要组件有所了解,包括 .NET CLR(Common Language Runtime)、.NET BCL(Base Class Library)以及 JIT(Just In Time)编译器等。本书并没有涉及 .NET 3.0组件,例如 WCF(Windows Communication Foundation)、WPF(Windows Presentation Foundation)以及 WF(Windows Workflow Foundation)等。不过其中介绍的各种用法同样适用于上述各个组件以及其他的 .NET Framework组件。
内容介绍
泛型是自 C# 1.1以来所有 C#语言新功能的基础。第 1章首先介绍了如何用泛型替代 System.Object和类型强制转换,随后讨论了一些高级主题,包括约束、泛型的特化、方法约束以及向后兼容性等。其中介绍的几种技术都是用泛型让你更清晰地表达出设计意图。多核处理器已经普及,同时计算机的核心数量也在不停增加。这也就意味着每个 C#开发人员都需要对 C#多线程编程有足够的理解。即便一章的篇幅不足以让你变成专家,但第 2章中的建议仍旧会对你开发多线程应用程序有所帮助。第 3章介绍了如何用 C#语言实现常用的设计。其中将介绍用 C#语言特性表达意图的最好方法。你将学到如何使用延迟求值,如何创建可组合的接口,以及如何避免由于公开接口中各种语言元素所带来的混乱。第 4章讨论了如何借助 C# 3.0的语言增强来解决编程中遇到的困难。包括如何使用扩展方法来分离契约和实现,如何高效地使用 C#闭包,以及如何使用匿名类型等。第 5章介绍了 LINQ及其查询语法,包含了编译器如何将查询关键字映射到方法调用的方法,如何区分委托和表达式树(以及需要时在二者之间进行转换),以及如何在需要单一值时处理查询等。第 6章介绍了如何定义分部类、使用可空类型,以及在使用数组参数时避免协变和逆变问题等。
示例代码书中给出的示例代码是代码片段,而不是完整的程序,但足够说明问题。
在有些示例中,方法名称就表明了该方法要完成的任务,例如 Allocate-ExpensiveResource()。这样你无需阅读完整代码即可快速领悟其所表达
的含义,从而应用到你的开发中。在省略了方法实现时,方法名称就表明了该方法的用途。
在所有的代码片段中,均假设引入了如下命名空间:..
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
若是使用到了其他命名空间中的类型,我将在类型中显式给出命名空间。
在本书的前 3章中,我会尽可能地使用 C# 2.0和 C# 3.0中的新语法,即使这些新语法并不是必需的。在第 4章和第 5章中,则假设你已经熟悉了 C# 3.0的新语法。
本书针对 C# 2.0和 C#3.0中添加的新特性给出了实用的建议,也包含了我在上本图书 Effective C#: 50 Specific Ways to Improve Your C#(Addison-Wesley, 2004)中没有提到的高级特性。本书中的条目主要针对那些正在使用 C# 3.0编写程序的开发人员。书中着重介绍了泛型技术,这是 C# 2.0和 C# 3.0中众多新特性的基石。本书中的条目并没有按照语言特性组织,而是根据新特性最善于解决的编程问题来编排的。与 Effective Software Development丛书中的其他图书一样,本书中每个条目的建议都自成一体,针对使用 C#时的某个特定问题。这些条目能够帮助你以最佳的方式从 C# 1.x切换至 C# 3.0。
泛型是 C#3.0中所有新特性的基础。虽然只有第 1章专门介绍了泛型,但你会发现泛型技术也几乎是每个条目中不可分割的一部分。阅读本书之后,你定会熟悉并喜欢上泛型以及元编程(metaprogramming)概念。
当然,本书中的很大一部分篇幅都用来讨论了如何使用 C# 3.0以及 LINQ查询语法。不过不管你是否将其用在查询数据源上,C# 3.0所添加的众多语言新特性均非常有用。语言上的改变非常巨大,LINQ又是引起改变的主要原因,它们都需要专门的章进行介绍。LINQ和 C# 3.0将深刻影响你编写 C#代码的方式,而本书则会让这个过渡更加平稳简单。
读者对象
本书是为那些使用 C#进行软件设计的专业开发人员所编写。本书假定你已对 C# 2.0和 C# 3.0有了一定的了解。Scott Meyers告诉我说,Effective系列
图书应该作为开发人员的针对某一主题学习的进阶参考资料。因此,本书中并没有泛泛介绍任何有关语言的新特性,而是着重阐述如何将这些新特性应用到正在开发的软件中。你将会学到,何时该在开发中使用这些新语言特性,以及如何避免误用所造成的问题。
除了对 C#语言新特性有一定了解之外,你还应该对组成 .NET Framework的主要组件有所了解,包括 .NET CLR(Common Language Runtime)、.NET BCL(Base Class Library)以及 JIT(Just In Time)编译器等。本书并没有涉及 .NET 3.0组件,例如 WCF(Windows Communication Foundation)、WPF(Windows Presentation Foundation)以及 WF(Windows Workflow Foundation)等。不过其中介绍的各种用法同样适用于上述各个组件以及其他的 .NET Framework组件。
内容介绍
泛型是自 C# 1.1以来所有 C#语言新功能的基础。第 1章首先介绍了如何用泛型替代 System.Object和类型强制转换,随后讨论了一些高级主题,包括约束、泛型的特化、方法约束以及向后兼容性等。其中介绍的几种技术都是用泛型让你更清晰地表达出设计意图。多核处理器已经普及,同时计算机的核心数量也在不停增加。这也就意味着每个 C#开发人员都需要对 C#多线程编程有足够的理解。即便一章的篇幅不足以让你变成专家,但第 2章中的建议仍旧会对你开发多线程应用程序有所帮助。第 3章介绍了如何用 C#语言实现常用的设计。其中将介绍用 C#语言特性表达意图的最好方法。你将学到如何使用延迟求值,如何创建可组合的接口,以及如何避免由于公开接口中各种语言元素所带来的混乱。第 4章讨论了如何借助 C# 3.0的语言增强来解决编程中遇到的困难。包括如何使用扩展方法来分离契约和实现,如何高效地使用 C#闭包,以及如何使用匿名类型等。第 5章介绍了 LINQ及其查询语法,包含了编译器如何将查询关键字映射到方法调用的方法,如何区分委托和表达式树(以及需要时在二者之间进行转换),以及如何在需要单一值时处理查询等。第 6章介绍了如何定义分部类、使用可空类型,以及在使用数组参数时避免协变和逆变问题等。
示例代码书中给出的示例代码是代码片段,而不是完整的程序,但足够说明问题。
在有些示例中,方法名称就表明了该方法要完成的任务,例如 Allocate-ExpensiveResource()。这样你无需阅读完整代码即可快速领悟其所表达
的含义,从而应用到你的开发中。在省略了方法实现时,方法名称就表明了该方法的用途。
在所有的代码片段中,均假设引入了如下命名空间:..
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
若是使用到了其他命名空间中的类型,我将在类型中显式给出命名空间。
在本书的前 3章中,我会尽可能地使用 C# 2.0和 C# 3.0中的新语法,即使这些新语法并不是必需的。在第 4章和第 5章中,则假设你已经熟悉了 C# 3.0的新语法。
媒体评论回到顶部↑
“作为C#设计组的成员,很少有书能够让我从中学到什么新东西,本书则是个例外,它很好地将特定的代码和深入的分析结合了起来。……这些富有洞察力的、充满远见的内容会对你日后学习C#提供很大的启发和帮助。”.
——Mads Torgersen,微软公司Visual C#项目经理
“Bill Wagner为C#开发人员撰写了一部精彩绝伦的图书,其中介绍了大量C#最佳实践。……若想成为C#开发的顶级高手,那么没有什么资料比Bill Wagner的这本书更好了。Bill非常智慧、深刻,富有经验和技巧。若能将这本书中给出的建议应用到你的代码中,定会大大提高你的工作质量。”
——Charlie Calvert,微软公司Visual C#社区项目经理...
——Mads Torgersen,微软公司Visual C#项目经理
“Bill Wagner为C#开发人员撰写了一部精彩绝伦的图书,其中介绍了大量C#最佳实践。……若想成为C#开发的顶级高手,那么没有什么资料比Bill Wagner的这本书更好了。Bill非常智慧、深刻,富有经验和技巧。若能将这本书中给出的建议应用到你的代码中,定会大大提高你的工作质量。”
——Charlie Calvert,微软公司Visual C#社区项目经理...







点击看大图



加载中...

