C#中IEnumerable和IEnumerator區別


IEnumerator:是一個真正的集合訪問器,提供在普通集合中遍歷的接口,有Current,MoveNext(),Reset(),其中Current返回的是object類型。
IEnumerable: 暴露一個IEnumerator(只包含一個抽象的方法GetEnumerator(),該方法返回一個可用於循環訪問集合的IEnumerator對象),支持在普通集合中的遍歷。
IEnumerator<T>:繼承自IEnumerator,有Current屬性,返回的是T類型。
IEnumerable<T>:繼承自IEnumerable,暴露一個IEnumerator<T>,支持在泛型集合中遍歷。

 

//這個接口告知調方對象的子項可以枚舉

public interface IEnumerable

{    

  IEnumerator GetEnumerator();

}

可以看到,GetEnumerator方法返回對另一個接口System.Collections.IEnumerator的引用。這個接口提供了基礎設施,調用方可以用來移動IEnumerable兼容容器包含的內部對象。

//這個接口允許調用方獲取一個容器的子項

public interface IEnumerator

{    

  bool MoveNext();   //將游標的內部位置向前移動    

  object Current{get;}  //獲取當前的項(只讀屬性)    

  void Reset();  //將游標重置到第一個成員前面

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM