为什么这里的接口Ilist用于创建List类型的对象
IList<BankAccountView> bankAccountViews = new List<BankAccountView>();
什么时候可以这样做
List<BankAccountView> bankAccountViews = new List<BankAccountView>();
答案 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/
答案 1 :(得分:0)
因此,在编写采用集合的函数或方法时,不要将其写入List,而是使用IList,ICollection或IEnumerable。即使对于异构列表,通用接口仍然可以工作,因为System.Object也可以是T。如果您决定使用堆栈或其他一些数据结构,这样做可以帮助您避免头痛。如果您需要在函数中完成所有操作,那么IEnumerable就是您应该要求的全部内容。
另一方面,当从函数返回一个对象时,你想给用户一个最丰富的操作集,而不必抛弃它们。因此,在这种情况下,如果它在内部是List,则将副本作为List返回。