15

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

谢谢!

重复:List (of T) 和 Collection(of T) 有什么区别?

4

5 回答 5

2

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

简短的回答是枚举器更轻、更高效。

于 2009-01-08T22:04:16.490 回答
2

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

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

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

这是基本的封装。

于 2009-01-08T22:05:17.487 回答
1

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

于 2009-01-08T22:06:06.720 回答
0

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

于 2009-01-08T22:05:17.317 回答
0

请参阅List (of T) 和 Collection(of T) 有什么区别?

于 2009-01-08T22:06:54.177 回答