前言

献给挚爱Holly

距离我为本书第1版写前言似乎已经过去很长时间了,但实际上只有两年半而已。在这段时间内,无论是我个人还是整个技术领域,都发生了相当大的变化。

就我个人而言,我非常荣幸地成为了Google的一名软件工程师,不过却无法像以前那样经常使用C#了。我对Stack Overflow1上瘾了,它是一个开发者问答论坛。本书第1版出版时,我的小儿子只有两岁大,而现在已经快上学了。我非常荣幸能在伦敦、奥斯陆、哥本哈根等地作关于C#的演讲,这种演讲以后会越来越多。所有这些,我都乐在其中,尽管偶尔略显忙碌。

1 当今最热门的技术问答网站,其创办人之一为Joel Spolsky——《软件随想录》作者。——编者注

技术世界依然日新月异。我是在一台上网本上撰写本书的,而上网本的概念在我写第1版时还没出现。那时最智能的智能手机在今天看来相当原始,而我如今的笔记本电脑已经堪比台式机了。不过在我看来,软件方面的发展反而不那么令人振奋,尽管现在已经成为主流的项目(如并行扩展)在当时还处于初级阶段。Silverlight仅仅是成为了一门完全托管的语言,而ASP.NET MVC仍然还很年轻,并且短时间内不会发布1.0版本。当然,C#本身仍然在不断变化,否则也没有必要撰写第2版了。

尽管一切都在改变,但本书所关注的角度依然不变。我仍然致力于帮助人们熟悉C#。因为新的框架层出不穷,同时也因为我们需要以更快的速度掌握这些东西,所以打造扎实的基础就显得尤为重要。我们至少应该能够有把握地指出,哪个是泛型方法调用,哪个是属性访问,哪个将Lambda表达式转换为委托,等等。

实际上,我认为掌握一门语言的一般标准一直在提高。令我惊喜的是,很多开发者很好地理解了LINQ,虽然对另外一些人来说,它依然神秘莫测。不可否认,这些观察结果主要来自Stack Overflow,这是个只有部分开发人员参与交流的网站,从中得出的观点具有一定的片面性。但即便如此,我仍然有理由对自己的观点持乐观态度。我希望本书第1版对这种标准的提高起到了一定的作用,希望本版亦然。

我一直打算真正地学一门新的语言。我已经对F#和Python有所涉猎,也答应自己要学习Erlang和Haskell。我也一直说要看看Ruby到底有什么稀奇的地方。但C#又把我拉了回来,每次都是这样。它并不完美,但它能让我简单明了地表达自己的想法,这对一门语言来说,或许应该是最重要的特性。总有一天,我会设法让自己远离C#,真正使用另外一种语言来思考问题。但在此之前,我希望能通过本书向你传达我对C#的满腔热忱。

目录

  • 版权声明
  • 译者序
  • 对本书第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 版本总结
  • 关于封面插图