gpt4 book ai didi

.net - : . Any() 与 .Count() > 0 哪种方法性能更好?

转载 作者:行者123 更新时间:2023-12-03 03:54:15 24 4
gpt4 key购买 nike

System.Linq命名空间中,我们现在可以扩展我们的IEnumerable's拥有Any()Count() 扩展方法

最近有人告诉我,如果我想检查集合中是否包含 1 个或多个项目,我应该使用 .Any() 扩展方法而不是 .Count( ) > 0 扩展方法,因为 .Count() 扩展方法必须迭代所有项目。

其次,某些集合具有 CountLength 属性(不是扩展方法)。使用它们代替 .Any().Count() 会更好吗?

是/不?

最佳答案

如果您从具有 .Length 的东西开始或.Count (例如 ICollection<T>IList<T>List<T> 等) - 那么这将是最快的选项,因为它不需要经过 GetEnumerator()/MoveNext()/Dispose() Any() 所需的序列检查非空 IEnumerable<T>序列。

IEnumerable<T> ,然后Any()通常会更快,因为它只需要查看一次迭代。但是,请注意 Count() 的 LINQ-to-Objects 实现确实检查 ICollection<T> (使用 .Count 作为优化) - 因此,如果您的基础数据源直接列表/集合,则不会有巨大差异。不要问我为什么它不使用非泛型 ICollection ...

当然,如果您使用 LINQ 来过滤它等(Where 等),您将拥有一个基于迭代器 block 的序列,因此这个 ICollection<T>优化是没有用的。

一般为IEnumerable<T> :坚持Any() ;-p

关于.net - : . Any() 与 .Count() > 0 哪种方法性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/305092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com