IList用于什么?

时间:2010-12-04 09:50:38

标签: c#

我已经在MSDN上搜索了它,我读到了它是非泛型的定义.... 但我的问题是我不明白它的用途和使用时间。所以我希望任何人都可以帮助我。谢谢。

4 个答案:

答案 0 :(得分:5)

除了不了解泛型的旧代码之外,还有很多情况下你知道你有一个列表的数据,但你不知道什么提前。数据绑定是一个典型的例子; DataSource属性通常会检查IList(通常是IListSource),然后查看对象以查看可用的属性。在这种情况下,它不能使用泛型。

事实上,任何时候使用反射IList都比IList-of-T更方便,因为泛型和反射不能很好地结合在一起。它可以做到,但这是一个痛苦。不幸的是,由于IList-of-T并非来自IList,因此有些情况可能会失败 - 但这是一个很好的95%规则。

特别是,IList允许您使用索引器,并添加/删除项目; IEnumerable不允许你做的事情。

大多数应用级代码(即您为应用程序编写的日常代码)应该关注通用版本;但是,还有很多必须使用反射的基础设施代码。

答案 1 :(得分:3)

当我们没有泛型时,

IList(非通用版本)是C#第一版的剩余部分。

使用C#2和.NET Framework 2.0,在语言中添加了泛型,并添加了集合类型的通用实现。因此,不再需要非泛型版本,但它们无法从框架中删除,因为它会使从.NET 1.1到2.0的代码移植成为一种痛苦。

今天,您几乎总是使用IList<T>IList仍然存在的主要原因是出于向后兼容的原因。

答案 2 :(得分:1)

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

这是为了向后兼容。

使用通用版本。

答案 3 :(得分:1)

它是一个接口,通常由集合类实现,它旨在提供类似于方法的列表,但在.net版本中小于2.0,即没有通用的介绍,所以如果你使用的是框架版本1.0,1.1,那么你会看到这个IList的用法