我读过几篇博文,提到对于公共 API,我们应该始终返回 ICollection(或 IEnumerable)而不是 List。返回 ICollection 而不是 List 的真正优势是什么?
谢谢!
我读过几篇博文,提到对于公共 API,我们应该始终返回 ICollection(或 IEnumerable)而不是 List。返回 ICollection 而不是 List 的真正优势是什么?
谢谢!
当您迭代它时,枚举器一次只返回一个实体。这是因为它使用了yield return。另一方面,集合返回整个列表,要求列表完全存储在内存中。
简短的回答是枚举器更轻、更高效。
在选择基础数据结构时,它为您提供了更多的自由。
List 假设实现支持索引,但 ICollection 不做这样的假设。
这意味着,如果您发现 Set 可能提供更好的性能,因为排序无关紧要,那么您可以自由地更改方法而不影响客户端。
这是基本的封装。
我认为 IList 会更合适,但是......
ICollection 只是一个接口,而 List 是该接口的特定实现。如果您以后想使用列表以外的其他容器怎么办?如果您公开公开 ICollection 接口,则可以稍后将内部容器更改为其他内容 - 只要新容器也实现 ICollection 接口。