祖宗: IEnumerable
此接口只有一個方法 GetEnumerator();
是FrameWork爲了實現迭代器模式設計的接口。所有繼承了IEnumerable的類,要使用foreach迭代器時,就需要使用該方法。因此也只有實現了該接口的類纔可以使用foreach。
ICollection繼承自IEnumerable,IList繼承自ICollection
這兩個接口都是爲了給集合提供一些公用的方法。只是分了兩個層次,IList比ICollection多幾個方法,增加,移除成員。可以簡單理解爲:ICollection主要針對靜態集合;IList主要針對動態集合。
IListIList,ICollection,IEnumerable在命名空間System.Collections中。
IList<T>,ICollection<T>,IEnumerable<T>。在System.Collections.Generic 命名空間中。
IList<T>,ICollection<T>,IEnumerable<T>。是2.0引入泛型以後新增的。主要是提高重用性與類型安全。
IEnumerable<T>繼承自IEnumerable
ICollection<T>繼承自IEnumerable<T>
IList<T>繼承自ICollection<T>
因此可以完全使用泛型接口,而放棄使用ICollection和IList。泛型接口提供了更好的類型安全和編譯時的檢驗。
補充:
IEnumerable<T>和IEnumerable都只有一個方法。
ICollection<T>和ICollection的結構是不一樣的。ICollection<T>比ICollection多幾個方法。它包含了幾個IList中的幾個方法。也許是對以前的改進。