译者序

Manning有许多图书都以X in Action命名,如著名的Ajax in Action、专门介绍LINQ的LINQ in Action,以及jQuery in ActionPHP in Action等。这些书偏重基础,包含大量的代码示例,即使是初学者,读起来也会十分轻松。我们一般称这种书为入门书,图灵公司在引进的时候,也给它们起了一个恰如其分的中文名——实战,如《jQuery实战》。

然而,本书则不同,它的英文名不是C# in Action,而是C# in Depth,有何区别呢?

很多C#程序员在有了一定基础之后,会出现一个成长的瓶颈。他们觉得似乎了解了C#的基本语法和各种语言特性,但对于这些特性的演变以及它们之间的关联却知之甚少。他们会在代码中使用泛型集合,但是对于类型推断的规则还很模糊。他们经常使用foreach语句,但却不会自己编写迭代器。他们知道C# 3中增加了很多非常酷的语法糖,但却不知道它们实际上都是为了更酷的LINQ准备的。他们为C# 4提供了动态类型而欢欣鼓舞,但却不了解DLR如何实现动态绑定,并且往往会滥用dynamic。这时候,他们不需要C# in Action,因为他们已经熟悉了字符串和整型,已经会编写接口、类、方法、属性和字段,甚至能说出引用类型和值类型的区别。他们需要的是一本进阶书,一本深入讲解C#的书,而本书正是这样一本书。

现在你明白两者的区别了吧!

本书没有任何关于.NET平台和CLR的内容,也不会指导你如何创建WPF或ASP.NET应用,它将全部注意力都放到C#语言本身,着重解析了C#各个版本的进化和演变。它面向中高级.NET 开发人员,如果你只是初学者,那可能需要一本更基础的书辅助阅读。本书第1版一经问世,就得到了业界诸多大牛的肯定和推荐。当图灵公司邀请我翻译第2版的新增内容时,我毫不犹豫地答应下来。

相较于第1版,第2版更为详尽地讲解了C# 2和C# 3的特性,对迭代器和LINQ等内容进行了修订,并添加了更多实用的代码示例。尤其值得注意的是,第2版新增了三个大的章节,分别介绍了C# 4的新增特性和代码契约。

感谢周靖和朱永光两位老师,他们为第1版的翻译付出了艰辛的劳动,在他们打下的良好基础之上进行工作,我倍感踏实。感谢编辑刘美英和李静,与她们的交流探讨让本书的译文更为准确可靠。特别感谢赵劼为本书进行复审,他的修改意见让本书增色不少。

最后要感谢的是我挚爱的妻子张玉。在我翻译期间,她身怀六甲,并且由于体质不好一直需要卧床静养。但她没有要求我的照顾和陪伴,而是一直默默地支持我,在此向她表达我深深的愧疚。

我要把本书献给我的宝贝女儿珧珧。在我交稿后的第10个小时,你就呱呱坠地了。你和你的母亲将是我今后人生的全部动力。

姚琪琳

2011年11月4日凌晨

目录

  • 版权声明
  • 译者序
  • 对本书第1版的赞誉
  • 前言
  • 致谢
  • 关于本书
  • 第一部分 基础知识
  • 第1章 C#开发的进化史
  • 第2章 C# 1所搭建的核心基础
  • 第二部分 C# 2:解决C# 1的问题
  • 第3章 用泛型实现参数化类型
  • 第4章 可空类型
  • 第5章 进入快速通道的委托
  • 第6章 实现迭代器的捷径
  • 第7章 结束C# 2的讲解:最后的一些特性
  • 第三部分 C# 3:革新写代码的方式
  • 第8章 用智能的编译器来防错
  • 第9章 Lambda表达式和表达式树
  • 第10章 扩展方法
  • 第11章 查询表达式和LINQ to Objects
  • 第12章 超越集合的LINQ
  • 第四部分 C# 4:良好的交互性
  • 第13章 简化代码的微小修改
  • 第14章 静态语言中的动态绑定
  • 第15章 使用契约让代码更加清晰
  • 第16章 何去何从
  • 附录A LINQ标准查询操作符
  • 附录B .NET中的泛型集合
  • 附录C 版本总结
  • 关于封面插图