我读了几篇博文,提到对于公共API,我们应该总是返回ICollection(或IEnumerable)而不是List。返回ICollection而不是List的真正优势是什么?
谢谢!
重复:What is the difference between List (of T) and Collection(of T)?
答案 0 :(得分:2)
枚举器在迭代时一次只返回一个实体。这是因为它使用收益率返回。另一方面,集合返回整个列表,要求列表完全存储在内存中。
简短的回答是,调查员更轻松,更有效率。
答案 1 :(得分:2)
在选择基础数据结构时,它为您提供了更多自由。
List假定实现支持索引,但ICollection不做这样的假设。
这意味着如果您发现Set可能提供更好的性能,因为排序无关紧要,那么您可以自由地更改您的方法而不会影响客户端。
这是基本的封装。
答案 2 :(得分:1)
我认为IList会更合适,但是......
答案 3 :(得分:0)
ICollection只是一个接口,而List是该接口的特定实现。如果您想稍后使用除列表之外的其他容器怎么办?如果您公开公开ICollection接口,您可以稍后将内部容器更改为其他内容 - 只要新容器也实现ICollection接口。
答案 4 :(得分:0)