我已经在MSDN上搜索了它,我读到了它是非通用的定义....但我的问题是我不明白它的用途是什么以及何时使用它.所以我希望任何人都可以帮助我.谢谢 .
除了不了解泛型的旧代码之外,还有很多情况下你知道你有一个数据列表,但你不能提前知道什么.数据绑定是一个典型的例子; DataSource属性通常会检查IList(通常是IListSource),然后查看对象以查看可用的属性.在这种情况下,它不能使用泛型.
实际上,任何时候使用反射IList都比IList-of-T更方便,因为泛型和反射不能很好地结合在一起.它可以做到,但这是一个痛苦.不幸的是,由于IList-of-T并非来自IList,因此有些情况可能会失败 - 但这是一个很好的95%规则.
特别是,IList允许您使用索引器,并添加/删除项目; IEnumerable不允许你做的事情.
大多数应用程序级代码(即您为应用程序编写的日常代码)应该关注通用版本; 但是,还有很多必须使用反射的基础设施代码.