C#2.0的特性(1)
C#2.0简介
C# 2.0引入了很多语言扩展,最重要的就是泛型(GeneriCS)、匿名方法(Anonymous Methods)、迭代器(Iterators)和不完全类型(Partial Types)。• 泛型允许类、结构、接口、委托和方法通过它们所存贮和操作的数据的类型来参数化。泛型是很有用的,因为它提供了更为强大的编译期间类型检查,需要更少的数据类型之间的显式转换,并且减少了对装箱操作的需要和运行时的类型检查。• 匿名方法允许在需要委托值时能够以“内联(in-line)”的方式书写代码块。匿名方法与Lisp语言中的拉姆达函数(lambda functions)类似。• 迭代器是能够增量地计算和产生一系列值得方法。迭代器使得一个类能够很容易地解释foreach语句将如何迭代他的每一个元素。• 不完全类型允许类、结构和接口被分成多个小块儿并存贮在不同的源文件中使其容易开发和维护。另外,不完全类型可以分离机器产生的代码和用户书写的部分,这使得用工具来加强产生的代码变得容易。这一章首先对这些新特性做一个简介。简介之后有四章,提供了这些特性的完整的技术规范。C# 2.0中的语言扩展的设计可以保证和现有代码的高度的兼容性。例如,尽管C#2.0在特定的环境中对单词where、yield和partial赋予了特殊的意义,这些单词还是可以被用作标识符。确实,C# 2.0没有增加一个会和现有代码中的标识符冲突的关键字。19.1 泛型泛型允许类、结构、接口、委托和方法通过它们所存贮和操作的数据的类型来参数化。C#泛型对使用Eiffel或Ada语言泛型的用户和使用C++模板的用户来说相当亲切,尽管它们也许无法忍受后者的复杂性。19.1.1 为什么泛型?没有泛型,一些通用的数据结构只能使用object类型来存贮各种类型的数据。例如,下面这个简单的Stack类将它的数据存放在一个object数组中,而它的两个方法,Push和Pop,分别使用object来接受和返回数据:public class Stack{object[] items;int count;public void Push(object item) {...}public object Pop() {...}