More Effective C#中文版:改善C#程序的50个具体办法(C#语言顶级高手的秘籍)
基本信息
- 作者: (美)Bill Wagner [作译者介绍]
- 译者: 陈黎夫
- 丛书名: 图灵程序设计丛书 C#与.NET系列
- 出版社:人民邮电出版社
- ISBN:9787115215703
- 上架时间:2010-1-15
- 出版日期:2010 年1月
- 开本:16开
- 页码:292
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C#
编辑推荐
C#语言顶级高手的秘籍
业界资深专家智慧和经验的结晶
理论和实践的完美结合
推荐阅读
内容简介回到顶部↑
作译者回到顶部↑
本书提供作译者介绍
Bill Wagner 拥有超过25年的软件开发经验,世界知名的.NET专家,微软C# MVP,并荣获微软Regional Director称号。他是著名软件咨询公司SRT Solutions的创始人,曾经领导了众多成功的Windows平台产品的开发。他是微软开发社区的活跃人物,长期担任MSDN Magazine、ASP.NET Pro、Visual Studio Magazine等技术杂志的专栏作者。他还是畅销书《Effective C#中文版》 (人民邮电出版社, 2007)的作者。
他的博客是http://srtsolutions.com/blogs/billwagner,可以通过bill.wagner@srtsolutions.com与他.. << 查看详细
他的博客是http://srtsolutions.com/blogs/billwagner,可以通过bill.wagner@srtsolutions.com与他.. << 查看详细
目录回到顶部↑
第1章 使用泛型
条目1:使用1.x框架api的泛型版本
条目2:恰到好处地定义约束
条目3:运行时检查泛型参数的类型并提供特定的算法
条目4:使用泛型强制编译期类型推断
条目5:确保泛型类型支持可销毁对象
条目6:使用委托定义类型参数上的方法约束
条目7:不要为基类或接口创建泛型的特殊实现
条目8:尽可能使用泛型方法,除非需要将类型参数用于实例的字段中
条目9:使用泛型元组代替out和ref参数
条目10:在实现泛型接口的同时也实现传统接口
第2章 c#中的多线程
条目11:使用线程池而不是创建线程
条目12:使用backgroundworker实现线程间通信
条目13:让lock()作为同步的第一选择
条目14:尽可能地减小锁对象的作用范围
条目15:避免在锁定区域内调用外部代码
条目16:理解windows窗体和wpf中的跨线程调用
第3章 c#设计实践
条目17:为序列创建可组合的api
条目1:使用1.x框架api的泛型版本
条目2:恰到好处地定义约束
条目3:运行时检查泛型参数的类型并提供特定的算法
条目4:使用泛型强制编译期类型推断
条目5:确保泛型类型支持可销毁对象
条目6:使用委托定义类型参数上的方法约束
条目7:不要为基类或接口创建泛型的特殊实现
条目8:尽可能使用泛型方法,除非需要将类型参数用于实例的字段中
条目9:使用泛型元组代替out和ref参数
条目10:在实现泛型接口的同时也实现传统接口
第2章 c#中的多线程
条目11:使用线程池而不是创建线程
条目12:使用backgroundworker实现线程间通信
条目13:让lock()作为同步的第一选择
条目14:尽可能地减小锁对象的作用范围
条目15:避免在锁定区域内调用外部代码
条目16:理解windows窗体和wpf中的跨线程调用
第3章 c#设计实践
条目17:为序列创建可组合的api
前言回到顶部↑
自从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及其查询语法,包含了编译器如何将查询关键字映射到方法调用的方法,如何区分委托和表达式树(以及需要时在二者之间进行转换),以及如何在需要单一值(scalar value)时处理查询等。
第6章介绍了如何定义部分类,使用可空类型,以及在使用数组参数时避免协变和逆变问题等内容。
示例代码
本书中给出的示例代码不是完整的程序,而是小块的代码片断,但已足够说明问题。在有些示例中,方法名称就表明了该方法要完成的任务,例如AllocateExpensiveResource()。这样你无需阅读整篇的代码即可快速领悟到其表达的含义,从而应用到你的开发中。在省略了方法实现时,方法名称就表明了该方法的用途。
在所有的代码片断中,均假设引入了如下命名空间:
using System;
using System.Collections.Generic;
本书针对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及其查询语法,包含了编译器如何将查询关键字映射到方法调用的方法,如何区分委托和表达式树(以及需要时在二者之间进行转换),以及如何在需要单一值(scalar value)时处理查询等。
第6章介绍了如何定义部分类,使用可空类型,以及在使用数组参数时避免协变和逆变问题等内容。
示例代码
本书中给出的示例代码不是完整的程序,而是小块的代码片断,但已足够说明问题。在有些示例中,方法名称就表明了该方法要完成的任务,例如AllocateExpensiveResource()。这样你无需阅读整篇的代码即可快速领悟到其表达的含义,从而应用到你的开发中。在省略了方法实现时,方法名称就表明了该方法的用途。
在所有的代码片断中,均假设引入了如下命名空间:
using System;
using System.Collections.Generic;
媒体评论回到顶部↑
“本书就像一盏明灯,照亮了C# 3.0中很多不为人知的角落。它不仅介绍了如何做,还解释了这样做的原因,让读者学习到很多经过实践检验的语言新特性用法,包括LINQ、泛型以及多线程等。若你确实需要使用C#语言开发程序,那么本书是必不可少的。”
——Bill Craun,Ambassador Solutions公司首席咨询师
“本书创造了一个让你能够和Bill Wagner并肩思考、工作的机会。Bill在本书中充分展示了他在C#上的造诣,给出了很多编程方面的有效建议,值得每个Visual C#开发者去学习。本书并没有停留在泛泛描述C#语法上,而是真正教会你使用C#语言。”
——Peter Ritchie,微软公司MVP: Visual C#
“本书是Bill Wagner前一本书的很好续作。其中对C# 3.0和LINQ的介绍非常及时!”
——Tomas Restrepo,微软公司MVP: Visual C++, .NET和Biztalk Server
“作为C#设计组的成员,很少有书能够让我从中学到什么新东西。本书则是个例外。它很好地将特定的代码和深入的分析结合了起来。本书提供了一系列非常有用的建议。当你通读全书之后,会发现不只得到了一条条独立的建议,还学到了如何能够以优雅的方式用C#进行程序设计。虽然你可以根据需要挑选某个条目阅读,但我仍强烈建议你通读全书——至少不要跳过每一章前面的介绍部分。这一富有洞察力的、充满远见的内容会对你日后的C#学习给予很大的启发和帮助。”
——Mads Torgersen,微软公司Visual C#项目经理
“Bill Wagner为C#开发人员撰写了一本精彩绝伦的图书,其中介绍了大量C#最佳实践。本书再次确立了他在C#社区中的重要地位。我们大都知道如何使用C#,同时也期待有人能给出提高的建议,让我们更上一层楼。若想成为C#开发的顶级高手,那么没有什么资料要比Bill Wagner的这本书更好了。Bill非常智慧、深刻,富有经验和技巧。若能将这本书中给出的建议应用到你的代码中,定会大大提高你的工作质量。”
——Charlie Calvert,微软公司Visual C#社区项目经理
——Bill Craun,Ambassador Solutions公司首席咨询师
“本书创造了一个让你能够和Bill Wagner并肩思考、工作的机会。Bill在本书中充分展示了他在C#上的造诣,给出了很多编程方面的有效建议,值得每个Visual C#开发者去学习。本书并没有停留在泛泛描述C#语法上,而是真正教会你使用C#语言。”
——Peter Ritchie,微软公司MVP: Visual C#
“本书是Bill Wagner前一本书的很好续作。其中对C# 3.0和LINQ的介绍非常及时!”
——Tomas Restrepo,微软公司MVP: Visual C++, .NET和Biztalk Server
“作为C#设计组的成员,很少有书能够让我从中学到什么新东西。本书则是个例外。它很好地将特定的代码和深入的分析结合了起来。本书提供了一系列非常有用的建议。当你通读全书之后,会发现不只得到了一条条独立的建议,还学到了如何能够以优雅的方式用C#进行程序设计。虽然你可以根据需要挑选某个条目阅读,但我仍强烈建议你通读全书——至少不要跳过每一章前面的介绍部分。这一富有洞察力的、充满远见的内容会对你日后的C#学习给予很大的启发和帮助。”
——Mads Torgersen,微软公司Visual C#项目经理
“Bill Wagner为C#开发人员撰写了一本精彩绝伦的图书,其中介绍了大量C#最佳实践。本书再次确立了他在C#社区中的重要地位。我们大都知道如何使用C#,同时也期待有人能给出提高的建议,让我们更上一层楼。若想成为C#开发的顶级高手,那么没有什么资料要比Bill Wagner的这本书更好了。Bill非常智慧、深刻,富有经验和技巧。若能将这本书中给出的建议应用到你的代码中,定会大大提高你的工作质量。”
——Charlie Calvert,微软公司Visual C#社区项目经理








点击看大图







加载中...

