在迭代/foreaching 集合之前检查 Enumerable 的 Count()
是否有任何速度改进或确实有必要?
List<int> numbers = new List<int>();
if(numbers.Count() > 0)
{
foreach(var i in numbers) {/*Do something*/}
}
最佳答案
不,反之亦然。如果它不是一个集合(如 List
或 Array
)而是一个延迟执行的查询,它必须完全执行,这可能非常昂贵,只是为了确定计数。在您的示例中,它实际上是 List
, Enumerable.Count
足够聪明,可以尝试将其转换为 ICollection<T>
/ICollection
第一的 。如果这成功了 Count
属性(property)被使用。
所以只需使用 foreach
.如果序列为空也没有坏处,循环将立即退出。
出于同样的原因,最好使用 Enumerable.Any
而不是 Count() > 0
如果您只想检查一个序列是否至少包含一个元素。意图也更加明确。
关于c# - 我是否需要在 foreach 之前检查 Enumerable 的 Count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20990717/