[英]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.