下面的语句我们非常熟悉:
IList<string> a = new List<string>();
a.Add("大鸟");
a.Add("菜鸟");
a.Add("大鸭");
a.Add("大嘴");
foreach (string item in a)
{
Console.WriteLine("{0}",item);
}
上面是一个for each in 语句,微软官方对此定义
http://msdn.microsoft.com/zh-cn/library/ms177202(v=VS.100).aspx
for each (type identifier in expression) {
statements
}expression要求继承 IEnumerable, IEnumerable<T>或者包含方法GetEnumerator,返回的类型继承至 IEnumerator。
再看编译器做了对for each in做了怎么换,
IEnumerator<string> e = a.GetEnumerator();
While(e.MoveNext)
{
Console.WriteLine("{0}",e.Current);
}参见模式类图,

IList对应图中Aggregat容器类,List为实际的容器类
IEnumerator对应Iterator迭代器
浙公网安备 33010602011771号