What is the real advantage of returning ICollection<T> instead of a List<T>?
本问题已经有最佳答案,请猛点这里访问。
我读过一些博客文章提到,对于公共API,我们应该始终返回ICollection(或IEnumerable)而不是List。返回iCollection而不是列表的真正好处是什么?
谢谢!
重复:t的list和t的collection有什么区别?
它在选择底层数据结构时提供了更多的自由。
列表假定实现支持索引,但ICollection不做这样的假设。
这意味着,如果您发现一个集合可能提供更好的性能,因为排序是不相关的,那么您可以在不影响客户机的情况下自由地更改方法。
这是基本的封装。
枚举器在迭代时每次只返回一个实体。这是因为它使用收益率回报。另一方面,集合返回整个列表,要求该列表完全存储在内存中。
简而言之,枚举器更轻,效率更高。
我想我会更合适,但是…
看看(t的)列表和(t的)集合之间有什么区别?
ICollection只是一个接口,而List是该接口的特定实现。如果您以后想使用列表之外的其他容器呢?如果公开公开了一个ICollection接口,您可以稍后将内部容器更改为其他内容-只要新容器也实现了ICollection接口。