首先IList泛型介面是ICollection泛型介面的子代,並且是所有泛型列表的基介面。它僅僅是所有泛型型別的介面,並沒有太多方法可以方便實用,如果僅僅是作為集合資料的承載體,確實,IList可以勝任。
其次, IList <>是在.net framework 2.0裡面才支援的
1.不過,更多的時候,我們要對集合資料進行處理,從中篩選資料或者排序。這個時候
IList就不太好使了。因為他的效率要慢。後面會一一講到。
2、IList <>是個介面,定義了一些操作方法這些方法要你自己去實現,List <>是泛型類,它已經實現了IList <>定義的那些方法IList IList11 =new List ();List List11 =new List ();這兩行程式碼,從操作上來看,實際上都是建立了一個List物件的例項,也就是說,他們的操作沒有區別。只是用於儲存這個操作的返回值變數型別不一樣而已。那麼,我們可以這麼理解,這兩行程式碼的目的不一樣。List List11 =new List ();是想建立一個List,而且需要使用到List的功能,進行相關操作。而IList IList11 =new List ();只是想建立一個基於介面IList的物件的例項,只是這個介面是由List實現的。所以它只是希望使用到IList介面規定的功能而已。
3.介面實現鬆耦合...有利於系統的維護與重構...優化系統流程...鼓勵使用介面,這樣可以實現功能和具體實現的分離.
這些說的都是有道理的,那麼接剛才第一點的話題說,為什麼說用到資料處理,或者排序IList就不太好使了呢。這個也是要根據資料量來的。我做了如下測試
public class TestClass { public intId { get; set; } publicstring Name { get; set; } }
static void Main(string[] args) { ListTest(); }
private static void ListTest() { Stopwatchtimer = new Stopwatch(); timer.Start(); List
當我們都去遍歷IList和List的時候,注意我取的資料是1~1000之間,經過反覆測試,IList的效率確實是要低一些。那就更不用說資料量更大的時候,請看輸出框:
但是,當我取的資料是1~500的時候,IList似乎效率還是要慢一些。
另外,可能有的朋友會說,你把前面的for迴圈放在外面比較呢,這個我也做過測試,結果還是一樣,List效率要好於IList
同樣的方法,我測試了,IList和List的OrderBy的效率,List均有勝面,高效一籌。所以,什麼時候用IList和List自己去斟酌,當你用到設計的時候當然是IList合理一些。用做資料容器遍歷或者排序,還是選擇List好一點。