为什么这里的接口ILIST用于创建列表类型的对象为什么使用接口IList创建List类型的对象?
IList<BankAccountView> bankAccountViews = new List<BankAccountView>();
时,这是可以做到这样的
List<BankAccountView> bankAccountViews = new List<BankAccountView>();
为什么这里的接口ILIST用于创建列表类型的对象为什么使用接口IList创建List类型的对象?
IList<BankAccountView> bankAccountViews = new List<BankAccountView>();
时,这是可以做到这样的
List<BankAccountView> bankAccountViews = new List<BankAccountView>();
列表是一个具体类型,而一个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/
所以一个集合,写它不采取一个列表,而是一个IList,一个ICollection或IEnumerable。即使对于异构列表,通用接口仍然可以工作,因为System.Object也可以是T。如果您决定在路上继续使用堆栈或其他数据结构,这样做可以节省您的头痛。如果您在函数中需要做的只是foreach,IEnumerable实际上就是您应该要求的。
另一方面,当从一个函数中返回一个对象时,你希望为用户提供尽可能多的操作,而不必四处投掷。那么在这种情况下,如果它是一个List内部的,则返回一个副本作为List。
谢谢..链接是有用的 – Prateik
是您关于这个继承或特别是约一个程序员优先选择的问题? – Sayse
这取决于情况。这个问题没有单一的答案。它是一个字段还是一个变量?你在做什么?是否有其他地方以不同的方式初始化相同的字段/变量? –
@Sayse这是关于继承 – Prateik