【发布时间】:2015-08-04 17:41:42
【问题描述】:
一般来说,我使用List,然后当我不再需要更新它们时将它们返回为IEnumerable。
但是,我遇到了一个问题,我实际上需要枚举它们,但首先需要知道计数。
IEnumerable 会枚举每个项目并找到计数 (O(N)),还是会依赖 List 的 Count 属性 (O(1))?
另外,如果IEnumerable 是 LINQ 查询的结果怎么办?
【问题讨论】:
-
您可以将
List转换为IReadOnlyCollection。它更好地说明了您的意图,并且还具有Count属性。 -
我完全同意@AndreySarafanov。而且您仍然可以享受协方差的好处 (
IReadOnlyCollection<out T>)。当然还有IReadOnlyList<out T>,如果您可能需要(或想要公开)索引器访问权限。
标签: c# linq ienumerable