IEnumerable
转自http://www.cnblogs.com/hsapphire/archive/2010/04/16/1713211.html
在平常的代码编写中,虽然不常用到Ienumerable 但却不可不知他的意义,有些时候使用会起到意想不到的作用,
我们从中可以知道 foreach 在IL中,是以Ienumberable 来体现的。
IEnumerable和IEnumerable 主要实现 public IEnumerator GetEnumerator()
C# 1.0中的foreach
没有迭代器的时候,创建一个可用于foreach的集合(C# 1.0):
public class MyCollection : IEnumerable {
public MyEnumerator GetEnumerator() { return new MyEnumerator(this); } public class MyEnumerator : IEnumerator { public void Reset(){...} public bool MoveNext(){...} public int Current{ get{...} } object IEnumerator.Current{ get{...} } } }
对集合使用foreach语句:
foreach(int i in col){...}
相当于:
IEnumerator etor = ((IEnumerable)col).GetEnumerator(); try { while(etor.MoveNext()) { ElementType clem (ElementType)etor.Current; ...; } } finally { (IDisposable)enumerator).Dispose(); }