为什么要使用接口IList来创建List类型的对象?

时间:2014-05-12 06:57:17

标签: c# interface ilist

为什么这里的接口Ilist用于创建List类型的对象

 IList<BankAccountView> bankAccountViews = new List<BankAccountView>();

什么时候可以这样做

 List<BankAccountView> bankAccountViews = new List<BankAccountView>();

2 个答案:

答案 0 :(得分:1)

List是一种具体类型,而IList是一个合约,您可以使用IList拥有的任何实现。

IList有一套在MSDN上定义的方法:http://msdn.microsoft.com/en-us/library/system.collections.ilist.aspx

这是一篇非常好的博文,详细解释了它:http://www.claudiobernasconi.ch/2013/07/22/when-to-use-ienumerable-icollection-ilist-and-list/

enter image description here

答案 1 :(得分:0)

因此,在编写采用集合的函数或方法时,不要将其写入List,而是使用IList,ICollection或IEnumerable。即使对于异构列表,通用接口仍然可以工作,因为System.Object也可以是T。如果您决定使用堆栈或其他一些数据结构,这样做可以帮助您避免头痛。如果您需要在函数中完成所有操作,那么IEnumerable就是您应该要求的全部内容。

另一方面,当从函数返回一个对象时,你想给用户一个最丰富的操作集,而不必抛弃它们。因此,在这种情况下,如果它在内部是List,则将副本作为List返回。

阅读链接:When to use IList and when to use List