C# 列表和IList之间的区别

C# 列表和IList之间的区别,c#,.net,C#,.net,可能的重复项: List和IList之间有什么区别,哪一个性能更好,何时使用List优于IList,反之亦然? IList是一个接口,没有任何实现,因此IList的性能取决于它实现的类如果您通过其他人将使用的库公开您的类,通常希望通过接口而不是具体实现来公开它。如果您决定稍后更改类的实现以使用不同的具体类,这将有所帮助。在这种情况下,库的用户不需要更新他们的代码,因为接口没有改变 若您只是在内部使用它,那个么您可能不太在意,使用列表也可以 有关更多信息,请查看此问题:IList是接口-有关更

可能的重复项:

List和IList之间有什么区别,哪一个性能更好,何时使用List优于IList,反之亦然?


IList是一个接口,没有任何实现,因此IList的性能取决于它实现的类

如果您通过其他人将使用的库公开您的类,通常希望通过接口而不是具体实现来公开它。如果您决定稍后更改类的实现以使用不同的具体类,这将有所帮助。在这种情况下,库的用户不需要更新他们的代码,因为接口没有改变

若您只是在内部使用它,那个么您可能不太在意,使用列表也可以


有关更多信息,请查看此问题:

IList是接口-有关更多信息,请参阅此问题-

在C中,列表是IList接口的具体实现。该列表是IList接口的一个实现。其思想是针对接口编程,而不是针对实现编程。因此,通常情况下,您的方法应该接受并返回集合的接口。这就留下了您自己的实现和调用方根据需要决定实际实现的空间


使用接口的好处在于,您可以实现自己的功能,或者更好地说,这是您唯一需要的功能。因此,如果只需要迭代/枚举,则不需要排序,添加方法。

Duplicate:另一个重复:@Devendra,标记它,因为回答问题的人会忽略很多次注释。答案从链接复制!至少引用作者。@tm1rbrt我在链接中提到,如果每个答案都有重复的问题,则该问题应标记为重复(现在有),而不是新的答案,是的,我知道这是旧的IList有一个Add()方法,但没有Sort()。IList可以只读,其中.Add将抛出。例如,数组。如果将IList与add一起使用,则每次都需要检查.IsReadOnly并进行处理。否则使用列表。你不能真的争论“哦,但我知道我总是会在这里传递一个列表”,那么你应该选择一个列表而不是IList,否则你就违反了Liskov替换原则:“如果S是t的子类型,那么t类型的对象可能会被S类型的对象替换”