C# 使用列表<;T>;vs.IList<;T>;

C# 使用列表<;T>;vs.IList<;T>;,c#,asp.net,.net,C#,Asp.net,.net,可能重复: 这个问题可能只是缺乏对.NET框架的理解,但是在接口中实际拥有一组数据而不仅仅是在列表中有什么好处呢?到目前为止,我只使用了列表,它似乎做了我需要它做的事情,但看看其他人的代码,我发现有人经常使用IEnumerable,IQueryable/IQueryable,ICollection,甚至IList。也就是说,List和IList之间有什么区别 我知道其中一些在所包含的对象上具有不同的功能,但哪一个是最安全的IEnumerable?如果将类型设置为接口类型,则可以使用实现ILis

可能重复:

这个问题可能只是缺乏对.NET框架的理解,但是在接口中实际拥有一组数据而不仅仅是在列表中有什么好处呢?到目前为止,我只使用了
列表
,它似乎做了我需要它做的事情,但看看其他人的代码,我发现有人经常使用
IEnumerable
IQueryable
/
IQueryable
ICollection
,甚至
IList
。也就是说,
List
IList
之间有什么区别


我知道其中一些在所包含的对象上具有不同的功能,但哪一个是最安全的
IEnumerable

如果将类型设置为接口类型,则可以使用实现IList的任何类型

如果使用
列表
,则只能使用该类型以及从中继承的类型


这取决于使用情况-如果只需要迭代,请使用
IEnumerable
,如果还需要添加/删除项,请使用
ICollection
。如果您需要索引到集合中,请使用IList等。

最好只使用您需要的内容。因此,如果一个方法只使用
IList
的方法和属性,为什么它要强制执行
列表作为参数?请注意,
数组
还实现了
IList