返回ICollection< T>的真正优点是什么?而不是List< T>? [重复]

StackOverflow https://stackoverflow.com/questions/426182

我读了几篇博文,提到对于公共API,我们应该总是返回ICollection(或IEnumerable)而不是List。返回ICollection而不是List的真正优势是什么?

谢谢!

重复:有什么区别列表(T)和收集(T)?

有帮助吗?

解决方案

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

简短的回答是,调查员更轻松,更有效率。

其他提示

在选择基础数据结构时,它为您提供了更多自由。

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

这意味着如果您发现Set可能提供更好的性能,因为排序无关紧要,那么您可以自由地更改您的方法而不会影响客户端。

这是基本的封装。

我认为IList会更合适,但是......

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top