网摘 |  收藏 | 

IEnumerable

转自http://www.cnblogs.com/hsapphire/archive/2010/04/16/1713211.html

在平常的代码编写中,虽然不常用到Ienumerable 但却不可不知他的意义,有些时候使用会起到意想不到的作用,

我们从中可以知道 foreach 在IL中,是以Ienumberable 来体现的。

IEnumerableIEnumerable 主要实现  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();
}

 

 

posted @ 2012-11-21 14:59  xulonghua219  阅读(143)  评论(0编辑  收藏  举报