返回ICollection 而不是List 的真正优势是什么?
我读过几篇博文,提到对于公共API,我们应该总是返回ICollection(或IEnumerable)而不是List。 返回ICollection而不是List的真正优势是什么?
谢谢!
重复: List(T)和Collection(T)有什么区别?
枚举器在迭代时一次只返回一个实体。 这是因为它使用了收益率 。 另一方面,集合返回整个列表,要求列表完全存储在内存中。
简短的回答是,调查员更轻松,更有效率。
在选择底层数据结构时,它为您提供了更多自由。
List假定实现支持索引,但ICollection没有这样的假设。
这意味着如果您发现Set可能提供更好的性能,因为排序无关紧要,那么您可以自由地更改您的方法而不会影响客户端。
这是基本的封装。
我认为IList会更合适,但……
ICollection只是一个接口,而List是该接口的特定实现。 如果您想稍后使用除列表之外的其他容器怎么办? 如果您公开公开ICollection接口,则可以稍后将内部容器更改为其他内容 – 只要新容器也实现ICollection接口即可。
请参阅List(of T)和Collection(of T)之间的区别是什么?
- 在返回值周围使用括号是否提供任何与编译器相关的好处?
- 如何将凭据传递给计算机,以便我可以使用Microsoft.Win32.RegistryKey.OpenRemoteBaseKey()?
- ‘Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment’的类型初始值设定项引发exception
- DataGridView使用Business Objects排序列
- 不安全的代码对安全代码有影响吗?
- entity framework中的级联删除(每个类型inheritance的表)
- 有没有办法使用DBMS_Alert通知Winform应用程序数据库更改
- 非常奇怪的Application.ThreadException行为
- MSTEST – 异步Testinitialize保证测试失败