强强联手,造就了这本优秀的C#书籍 !Mark Michaelis的《C#本质论》系列早已成为经典,之前的第4版与著名的C#博主Eric Lippert携手,更使之升华为无与伦比的大师级著作。

一般人的印象是Eric写博客,而Mark写书,但我刚认识他们的时候可不是这样的。

2005年LINQ(语言集成查询)公布时,我才刚加入Microsoft,正好见证了PDC会议上的令人激动的公开发布。虽然对技术本身几乎没有什么贡献,但它的宣传造势我可是全程参加了。那个时候人人都在谈论它,宣传小册子满天飞。那是C#和.NET的大日子,至今仍然令人难忘。

但会场的实验室区域却相当安静,在那儿,人们可以自行按照精心编写的实验指南进行技术预览。我就是在那儿遇见Mark的。不用说,他一点儿没有按部就班的意思。他在做自己的实验,梳理文档,和别人沟通,忙着收集自己的照片。

作为C#社区的新人,我在那次会议上见到了许多名人。但老实说,后来都记不大清楚了。唯一记得住的就是Mark。因为当我问他是否喜欢这个新技术时,他不像别人那样马上开始滔滔不绝,而是非常冷静地说:“还不确定,我还没有完全了解它。”他希望完整地理解并消化这一技术,而在这之前,他不希望别人的先入之见影响他的思考。

所以并没有像我预想的那样发生一次快餐式的对话。相反,我们的对话相当坦诚而且颇有裨益。像这样的交流好多年都没有发生了。新技术的细节、造成的后果和存在的问题都涉及了。对我们这些语言设计者来说,Mark是最有价值的社区成员,因为他非常聪明,会打破砂锅问到底,能深刻理解一种技术对于真正的开发人员的影响。但是,最根本的原因可能还是他的坦诚,他从不惧怕说出自己的想法。如果我们开发的某种技术能够通过Mark的测试,就没有什么好担心的了!

这些特质也使Mark成为一名出色的作家。他的文字直指技术的本质,向读者提供最完整的信息,没有废话,能敏锐地看出技术的真正价值和问题。

Eric是C#团队中和我共事7年的同事。他在这里的资格比我老得多。回想第一次见到他时,他正在向团队解释如何理清乱局。确切地说,当时C#编译器代码库正需要在架构上进行一些重大调整,而新功能却很难加入进来——我们迫切需要LINQ来解决这些问题。Eric已经调查好了我们需要有什么样的架构(阶段啊阶段!当时甚至根本就没有这个概念!)。更重要的是,如何逐步跟进。令人惊讶的是,虽然这个主题是如此复杂,作为团队和代码库新人的我,居然立即就明白了他所讲的东西!

从博客就能看出,他讲东西非常清楚,而且结构合理,读者能快速地把一个问题搞明白,除了能收获解决方案之外,阅读过程同样令人愉悦。还不止如此!每次Eric钻研一个复杂的问题并与团队分享见解时,他的电子邮件都是那么一丝不苟又充满乐趣。基本上不可能忽视Eric提出的任何问题,因为你会迫不及待地想要看完他的文章。除此之外,他的文字还非常大气!所以,我非常喜欢看他的东西,包括经常更新的博客文章。作为C#编译器团队和语言设计团队的一员,他为我们带来的愉悦和帮助真是太多了。虽然Eric离开了Microsoft,但他精彩的、有洞见的意见仍然会影响我们的决策。

总之,能和这两位出色的伙伴共事,我深感荣幸。Eric帮我理清思路,Mark帮我说出真心话。他们帮助读者认清楚问题并掌握解决方案。通过分别主攻C#的“内”和“外”,本书的这个版本在完整性方面达到了前所未有的高度。没有人能像这两位大师一样帮助你正确地理解C# 6.0。

请好好享用本书!

——Mads Torgersen

微软公司C#项目经理

目录

  • 版权
  • 内容提要
  • 版权声明
  • 献给
  • 前言
  • 致谢
  • 第1章 C#概述
  • 第2章 数据类型
  • 第3章 操作符和控制流
  • 第4章 方法和参数
  • 第5章 类
  • 第6章 继承
  • 第7章 接口
  • 第8章 值类型
  • 第9章 良构类型
  • 第10章 异常处理
  • 第11章 泛型
  • 第12章 委托和Lambda表达式
  • 第13章 事件
  • 第14章 支持标准查询操作符的集合接口
  • 第15章 使用查询表达式的LINQ
  • 第16章 构建自定义集合
  • 第17章 反射、特性和动态编程
  • 第18章 多线程处理
  • 第19章 线程同步
  • 第20章 平台互操作性和不安全的代码
  • 第21章 CLI
  • 附录A 下载和安装C#编译器与CLI平台
  • 附录B 井字棋源代码清单
  • 附录C 使用TPL和C# 6.0之前的多线程处理模式(网上下载)
  • 附录D C# 6.0的async/await模式之前的计时器(网上下载)

相关技术

推荐用户