C# 返回ICollection的真正优势是什么<;T>;而不是列表<;T>;?
我读过几篇博客文章,提到对于公共API,我们应该始终返回ICollection(或IEnumerable),而不是List。返回ICollection而不是列表的真正优势是什么 谢谢C# 返回ICollection的真正优势是什么<;T>;而不是列表<;T>;?,c#,.net,ienumerable,icollection,C#,.net,Ienumerable,Icollection,我读过几篇博客文章,提到对于公共API,我们应该始终返回ICollection(或IEnumerable),而不是List。返回ICollection而不是列表的真正优势是什么 谢谢 重复:当您在枚举器上迭代时,枚举器一次只返回一个实体。这是因为它使用了收益率回报率。另一方面,集合返回整个列表,要求将该列表完全存储在内存中 简单的回答是,枚举数更轻、效率更高。ICollection只是一个接口,而List是该接口的具体实现。如果您以后想使用列表之外的其他容器呢?如果公开公开ICollection
重复:当您在枚举器上迭代时,枚举器一次只返回一个实体。这是因为它使用了收益率回报率。另一方面,集合返回整个列表,要求将该列表完全存储在内存中
简单的回答是,枚举数更轻、效率更高。ICollection只是一个接口,而List是该接口的具体实现。如果您以后想使用列表之外的其他容器呢?如果公开公开ICollection接口,以后可以将内部容器更改为其他容器—只要新容器也实现ICollection接口。它在选择基础数据结构时给予您更多自由 列表假设实现支持索引,但ICollection不做这样的假设 这意味着,如果您发现一个集合可能会提供更好的性能,因为排序是不相关的,那么您可以在不影响客户机的情况下自由地更改方法
这是基本的封装。我认为IList更合适,但是…看到了吗?!我想他指的是如何设置返回类型,而不是要返回的实际对象。这是一个类接口契约的问题。他问的是返回枚举数相对于列表的优势是什么,而不是如何返回。回答如下: