我读了几篇博客文章,提到在公共API中,我们应该始终返回ICollection(或IEnumerable)而不是List。返回ICollection而不是List的真正优势是什么?
谢谢!
重复:List (of T)和Collection(of T)之间的区别是什么?
谢谢!
重复:List (of T)和Collection(of T)之间的区别是什么?
当选择底层数据结构时,它会为您提供更多的自由。
列表(List)假定实现支持索引,但ICollection则不做此假设。
这意味着,如果您发现Set可能提供更好的性能,因为排序是不相关的,那么您可以在不影响客户端的情况下自由更改您的方法。
这是基本的封装。
我认为IList可能更合适,但是...
ICollection只是一个接口,而List是该接口的具体实现。如果您以后想使用除列表之外的其他容器怎么办?如果您公开暴露ICollection接口,您可以稍后将内部容器更改为其他内容 - 只要新容器也实现了ICollection接口。