第1章 C#开发的进化史

本章概要

  • 一个进化的例子

  • .NET的组成

  • 使用本书代码

  • C#语言规范

你知道我喜欢Python、Ruby、Groovy这些动态语言的哪些方面吗?它们去代码之糟粕,仅取其精华——即真正进行处理的那部分内容。繁琐的形式被生成器、Lambda表达式、列表推导式等特性所代替。

有趣的是,那些旨在让动态语言感觉轻巧的特性,却很少与动态有关。当然,像鸭子类型和活动记录(Active Record)中的一些神奇用法还是与动态有关的,但静态类型的语言却完全可以不那么笨拙和繁重。

回到C#。在某些方面,C# 1可以被看成是2001年Java语言的升级版。它们的相似之处十分明显,但C#还包含一些额外的特性:作为一级语言特性的属性、委托和事件、foreach循环、using语句、显式方法重载、操作符重载、自定义值类型等,恕不一一列举。语言的偏好显然是个人问题,但在我第一次使用C# 1时,就明显感到它比Java要更进一步。

从那时起,C#的开发可谓渐入佳境。C#的每个新版本都添加了重要的特性,不断为开发者排忧解难,而这些特性往往都是经过深思熟虑的,很少有向后不兼容的情况。即使在C# 4增添真正实用的动态类型功能之前,C#也已经引入了很多与动态(及函数式)语言相关的特性,使代码更加容易编写和维护。

本书将逐一介绍这些变化,让你真正喜欢上C#编译器准备为你上演的奇迹。不过这些都是后话,本章我将马不停蹄地介绍尽可能多的特性。在比较C#语言和.NET平台时,我会给出我的定义,随后还要重点说明一下本书剩余部分应掌握的关键内容。接着我们就可以深入细节了。

我们不会在这单独的一章中介绍所有变化,但会涵盖以下方面的内容:泛型、设置不同访问修饰符的属性、可空类型、匿名方法、自动实现的属性、增强的集合初始化程序、增强的对象初始化程序、Lambda表达式、扩展方法、隐式类型、LINQ查询表达式、命名实参、可选参数、简化的COM互操作和动态类型。这些将伴随着我们从C# 1一路讲到最新发布的C# 4。内容显然很多,让我们现在就开始吧。

目录