C# 规范 2.0 版
C# 2.0 引入了几项语言扩展,其中包括泛型 (Generic)、匿名方法 (Anonymous Method)、迭代器 (Iterator)、分部类型 (Partial Type) 和可空类型 (Nullable Type)。
· 泛型可以让类、结构、接口、委托和方法按它们存储和操作的数据的类型进行参数化。泛型很有用,因为它们能提供更强的编译时类型检查,减少数据类型之间的显式转换,以及装箱操作和运行时的类型检查。
· 在需要委托值的地方,匿名方法允许以“内联”方式编写代码块。匿名方法类似于 Lisp 编程语言中的 lambda 函数。C# 2.0 支持创建“closure”,其中的匿名方法可以访问外层局部变量和参数。
· 迭代器是执行递增计算并产生一系列值的方法。迭代器使类型可以简便地指定foreach 语句循环访问其元素的方式。
· 分部类型允许将类、结构和接口划分为多个部分,存储在不同的源文件中,以便于开发和维护。此外,分部类型允许将计算机生成的类型部分和用户编写的类型部分互相分开,以便更容易地扩充工具生成的代码。
· 可空类型表示可能未知的值。可空类型支持其基础类型的所有值以及一个附加的空状态。任何值类型均可作为可空类型的基础类型。可空类型支持与其基础类型相同的转换和运算符,另外还提供类似于 SQL 的空值传播。
本章将简要介绍这些新功能。之后,接下来的 5 章详细介绍这些功能的完整技术规范。最后一章介绍 C# 2.0 中引入的一些次要的扩展。
C# 2.0 中的语言扩展在设计上充分考虑并确保与现有代码的最大兼容性。例如,尽管 C# 2.0 在某些上下文中为单词 where、yield 和 partial 提供了特殊含义,但是这些单词仍可用作标识符。实际上,C# 2.0 没有添加新的关键字,因为这样的关键字可能与现有代码中的标识符冲突。
有关 C# 语言的最新信息以及如何为本文档提供反馈意见的说明,请访问“C# 语言主页”(http://msdn.microsoft.com/vcsharp/language)。