C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码2010-08-14 MSDN Juval Lowy热衷于 C# 语言的人会喜欢上 Visual C# 2005。Visual Studio 2005 为 Visual C# 2005 带来了大量令人兴奋的新功能,例如泛型、迭代程序、局部类和 匿名方法等。虽然泛型是人们最常谈到的也是预期的功能,尤其是在熟悉模板的 C++ 开发人员中间,但是其他的新功能同样是对Microsoft .NET开发宝库的重要 补充。与 C# 的第一个版本相比,增加这些功能和语言将会提高您的整体生产效 率,从而使您能够以更快的速度写出更加简洁的代码。有关泛型的一些背景知识 ,您应该看一看提要栏“什么是泛型?”。迭代程序在 C# 1.1 中,您可以使用 foreach 循环来遍历诸如数组、集合这样的数据结构:
string[] cities = {"New York","Paris","London"};
foreach(string city in cities)
{
Console.WriteLine(city);
}
实际上,您可以在 foreach 循环中使用任何自定义数据集合,只要该 集合类型实现了返回 IEnumerator 接口的 GetEnumerator 方法即可。通常,您 需要通过实现 IEnumerable 接口来完成这些工作:
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
public interface IEnumerator
{
object Current {get;}
bool MoveNext();
void Reset();
}
在通常情况下,用于通过实现 IEnumerable 来遍历集合的类是作为要遍历的集合 类型的嵌套类提供的。此迭代程序类型维持了迭代的状态。将嵌套类作为枚举器 往往较好,因为它可以访问其包含类的所有私有成员。当然,这是迭代程序设计 模式,它对迭代客户端隐藏了底层数据结构的实际实现细节,使得能够在多种数 据结构上使用相同的客户端迭代逻辑,如图 1 所示。

图 1 迭代程序设计模式