首页 > 后端开发 > C++ > 如何在不迭代的情况下获取 IEnumerable 中的项目计数?

如何在不迭代的情况下获取 IEnumerable 中的项目计数?

DDD
发布: 2024-12-28 08:40:12
原创
484 人浏览过

How to Get the Count of Items in an IEnumerable without Iteration?

从 IEnumerable 检索项目计数没有迭代

考虑一个场景,您有一个 IEnumerable;集合如下:

private IEnumerable<string> Tables
{
    get
    {
        yield return "Foo";
        yield return "Bar";
    }
}
登录后复制

您想要迭代此集合并将进度显示为“处理 #n of #m”。有没有一种方法可以在主迭代之前确定 m 的值?

理解 IEnumerable

默认情况下,IEnumerable 不允许直接检索项目计数。其惰性求值本质意味着仅根据需要检索元素。这种设计选择是为了通过避免不必要的内存分配和处理来优化资源使用。

替代解决方案:使用 ICollection

如果您需要立即了解项目计数, IEnumerable 的替代方案是使用 ICollection。与 IEnumerable 不同,ICollection 提供了 Count 属性,该属性返回集合中元素的数量。

public class TableCollection : ICollection<string>
{
    // Implementation details omitted for brevity

    public int Count => 2;
}
登录后复制

通过将 Tables 集合强制转换为 ICollection;或者使用像 List 这样的通用集合,您可以访问 Count 属性来检索项目计数,而无需迭代。

结论

虽然 IEnumerable 提供惰性评估的好处是,它不直接支持项目计数检索。要立即访问计数,请考虑使用 ICollection 或更合适的提供此功能的数据结构。

以上是如何在不迭代的情况下获取 IEnumerable 中的项目计数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板