C#中IEnumerable、ICollection、IList、List之間的區(qū)別
首先我看看 IEnumerable:
// 摘要: // 公開枚舉器,該枚舉器支持在指定類型的集合上進(jìn)行簡單迭代。 // // 類型參數(shù): // T: // 要枚舉的對象的類型。 [TypeDependency("System.SZArrayHelper")] public interface IEnumerable<out T> : IEnumerable { // 摘要: // 返回一個循環(huán)訪問集合的枚舉器。 // // 返回結(jié)果: // 可用于循環(huán)訪問集合的 System.Collections.Generic.IEnumerator<T>。 IEnumerator<T> GetEnumerator(); }
IEnumerable<T> 實現(xiàn)IEnumerable接口方法,那IEnumberable做什么的,其實就提高可以循環(huán)訪問的集合。說白了就是一個迭代。
再來看看ICollection:
// 摘要: // 定義操作泛型集合的方法。 // // 類型參數(shù): // T: // 集合中元素的類型。 [TypeDependency("System.SZArrayHelper")] public interface ICollection<T> : IEnumerable<T>, IEnumerable
原來ICollection<T> 同時繼承IEnumerable<T>和IEnumerable兩個接口,按我的理解就是,ICollection繼續(xù)它們2個接口而且擴(kuò)展了方法,功能強(qiáng)多了。
我們繼續(xù)看IList:
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
靠 IList 繼承它們?nèi)齻€接口,怪不得功能這么多啊
最后來看看List:
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
這個時候大家仔細(xì)看看,它們都是接口,只有List 是類,不僅實現(xiàn)它們的接口,而且還擴(kuò)展了太多的方法給我利用。哇靠,幾乎所有功能都能實現(xiàn)了
按照功能排序:List<T> 《IList<T> 《ICollection<T>《IEnumerable<T>
按照性能排序:IEnumerable<T>《ICollection<T>《IList<T>《List<T>
相關(guān)文章
VS2012 未找到與約束ContractName匹配的導(dǎo)出
這篇文章主要介紹了在更新的windows補丁后,Visual Studio 用戶可能無法打開或創(chuàng)建 C++ 或 JavaScript 文件或項目,小編的解決辦法,希望可以幫助到大家2018-04-04C#實現(xiàn)將Doc文檔轉(zhuǎn)換成rtf格式的方法示例
這篇文章主要介紹了C#實現(xiàn)將Doc文檔轉(zhuǎn)換成rtf格式的方法,結(jié)合實例形式分析了C#針對word文件的讀取及文檔格式轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-07-07