返回ICollection<T>而不是List<T>的真正优势是什么?

15

回复在这里:https://dev59.com/3XVC5IYBdhLWcg3whBWj - Click Ok
5个回答

2
一个枚举器只能一次返回一个实体,当您遍历它时。这是因为它使用了“yield return”。另一方面,集合会返回整个列表,需要完全存储在内存中。
简短的回答是枚举器更轻便和更有效率。

什么?!我想他的意思是如何设置返回类型,而不是要返回的实际对象。这是一个类接口合同的问题。 - Mehrdad Afshari
他询问返回枚举器与列表的优势,而不是如何返回。 - Soviut

2

当选择底层数据结构时,它会为您提供更多的自由。

列表(List)假定实现支持索引,但ICollection则不做此假设。

这意味着,如果您发现Set可能提供更好的性能,因为排序是不相关的,那么您可以在不影响客户端的情况下自由更改您的方法。

这是基本的封装。


1

我认为IList可能更合适,但是...


0

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



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接