返回ICollection <t>而不是List <t>?</t> </t>的真正好处是什么?

时间:2009-01-08 21:59:56

标签: c# .net ienumerable icollection

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

谢谢!

重复:What is the difference between List (of T) and Collection(of T)?

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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

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

这是基本的封装。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)