关于c#:返回ICollection< T>的真正优势是什么?

What is the real advantage of returning ICollection<T> instead of a List<T>?

本问题已经有最佳答案,请猛点这里访问。

我读过一些博客文章提到,对于公共API,我们应该始终返回ICollection(或IEnumerable)而不是List。返回iCollection而不是列表的真正好处是什么?

谢谢!

重复:t的list和t的collection有什么区别?


它在选择底层数据结构时提供了更多的自由。

列表假定实现支持索引,但ICollection不做这样的假设。

这意味着,如果您发现一个集合可能提供更好的性能,因为排序是不相关的,那么您可以在不影响客户机的情况下自由地更改方法。

这是基本的封装。


枚举器在迭代时每次只返回一个实体。这是因为它使用收益率回报。另一方面,集合返回整个列表,要求该列表完全存储在内存中。

简而言之,枚举器更轻,效率更高。


我想我会更合适,但是…


看看(t的)列表和(t的)集合之间有什么区别?


ICollection只是一个接口,而List是该接口的特定实现。如果您以后想使用列表之外的其他容器呢?如果公开公开了一个ICollection接口,您可以稍后将内部容器更改为其他内容-只要新容器也实现了ICollection接口。