簡體   English   中英

IList用於什么?

[英]What is IList used for?

我已經在MSDN上搜索了它,我讀到了它是非通用的定義....但我的問題是我不明白它的用途是什么以及何時使用它。 所以我希望任何人都可以幫助我。 謝謝 。

除了不了解泛型的舊代碼之外,還有很多情況下你知道你有一個數據列表 ,但你不能提前知道什么 數據綁定是一個典型的例子; DataSource屬性通常會檢查IList(通常是IListSource),然后查看對象以查看可用的屬性。 在這種情況下,它不能使用泛型。

實際上,任何時候使用反射IList都比IList-of-T更方便,因為泛型和反射不能很好地結合在一起。 它可以做到,但這是一個痛苦。 不幸的是,因為IList-of-T並非來自IList,所以有些情況可能會失敗 - 但這是一個很好的95%規則。

特別是,IList允許您使用索引器,並添加/刪除項目; IEnumerable不允許你做的事情。

大多數應用程序級代碼(即您為應用程序編寫的日常代碼)應該關注通用版本; 但是,還有很多必須使用反射的基礎設施代碼。

當我們沒有泛型時, IList (非泛型版)是C#第一版的遺留物。

使用C#2和.NET Framework 2.0,在語言中添加了泛型,並添加了集合類型的通用實現。 因此,不再需要非泛型版本,但它們無法從框架中刪除,因為它會使從.NET 1.1到2.0的代碼移植成為一種痛苦。

今天,你幾乎總是使用IList<T>IList仍然存在的主要原因是出於向后兼容的原因。

它是在.NET 2.0中引入泛型之前存在的接口。

它是為了向后兼容。

使用通用版本。

它是一個接口,通常由集合類實現,它旨在提供類似於方法的列表,但在.net版本中小於2.0,即沒有通用的介紹,所以如果你使用的是框架版本1.0,1.1,那么你會看到它的用法IList的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM