C# 为什么要使用接口IList创建列表类型的对象?

C# 为什么要使用接口IList创建列表类型的对象?,c#,interface,ilist,C#,Interface,Ilist,为什么在这里接口Ilist用于创建列表类型的对象 IList<BankAccountView> bankAccountViews = new List<BankAccountView>(); IList bankAccountViews=新列表(); 什么时候可以这样做 List<BankAccountView> bankAccountViews = new List<BankAccountView>(); List bankaccoun

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

 IList<BankAccountView> bankAccountViews = new List<BankAccountView>();
IList bankAccountViews=新列表();
什么时候可以这样做

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

列表是一种具体类型,而IList是一种契约,您可以使用IList拥有的任何实现

IList具有MSDN上定义的一组方法:

下面是一篇非常好的博客文章,详细解释了这一点:


因此,在编写接受集合的函数或方法时,编写该函数或方法的目的不是获取列表,而是获取IList、ICollection或IEnumerable。由于System.Object也可以是T,所以即使对于异构列表,通用接口仍然可以工作。如果您决定在将来使用堆栈或其他数据结构,那么这样做可以省去您的头疼。如果您需要在函数中执行的只是foreach,那么IEnumerable就是您真正需要的

另一方面,当从函数中返回一个对象时,您希望为用户提供最丰富的操作集,而无需用户进行转换。因此,在这种情况下,如果它是一个内部列表,则返回一个副本作为列表


阅读链接:

您的问题是关于此继承的,还是关于一个程序员的首选?这取决于具体情况。这个问题没有单一的答案。它是字段还是变量?你拿它干什么?还有其他地方可以用不同的方式初始化相同的字段/变量吗?@Sayse这是关于继承的问题我想知道为什么在C#中使用IList over List。谢谢。。链接是有用的