List與IList的區別

2022-03-20 12:54:44 字數 1554 閱讀 1181

在我看乙個源程式的時候看到這個例子使用了ilist返回型別,因為上午剛剛總結過list的詳細用法,突然出現了ilist,感覺很奇怪,於是上網蒐集了很多東西才明白了

它們的區別,剛開始僅僅是看文字說明,但是怎麼都不明白,後來看到了乙個例項,然後接著

看文字說明,豁然開朗啊,現在我先把這個例項程式寫出來:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

list

}class

program

//**

////

///轉換ilist

為list

//將ilist介面泛型轉為list泛型型別

/// ///

指定的集合中泛型的型別

///需要轉換的ilist

///public

static listconvertilisttolist(ilistgblist) where t : class

//靜態方法,泛型轉換,

return

list;

}return

null

; }

}}

注意:ilistuilists = new list();  //千萬要注意:等式的右邊是list,

而不是 ilist,如果在list前面加乙個i, 就會出現錯誤:抽象類或介面無法建立例項。

下面說一下ilist與list的區別:

(1)首先ilist 泛型介面是 icollection 泛型介面的子代,並且是所有泛型列表的基介面。

它僅僅是所有泛型型別的介面,並沒有太多方法可以方便實用,如果僅僅是作為集合資料的承載體,確實,ilist可以勝任。

不過,更多的時候,我們要對集合資料進行處理,從中篩選資料或者排序。這個時候ilist就愛莫能助了。

1、當你只想使用介面的方法時,ilis<>這種方式比較好.他不獲取實現這個介面的類的其他方法和字段,有效的節省空間.

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介面規定的功能而已。

IList與List的區別

已經有很多人討論過ilist和list的區別,恩,我也贊同其中的一些觀點,其實他們二者也是有優有劣的,看你著重用在哪個方面,先貼一下我贊同的意見,基本上也都是們總結的。首先ilist 泛型介面是 icollection 泛型介面的子代,並且是所有泛型列表的基介面。它僅僅是所有泛型型別的介面,並沒有太...

Ilist 與list的區別

首先ilist 泛型介面是 icollection 泛型介面的子代,並且是所有泛型列表的基介面。它僅僅是所有泛型型別的介面,並沒有太多方法可以方便實用,如果僅僅是作為集合資料的承載體,確實,ilist可以勝任。不過,更多的時候,我們要對集合資料進行處理,從中篩選資料或者排序。這個時候ilist就愛莫...

C 中IList與List區別

首先ilist 泛型介面是 icollection 泛型介面的子代,並且是所有泛型列表的基介面。它僅僅是所有泛型型別的介面,並沒有太多方法可以方便實 用,如果僅僅是作為集合資料的承載體,確實,ilist可以勝任。不過,更多的時候,我們要對集合資料進行處理,從中篩選數 據或者排序。這個時候ilist就...