首页 > 后端开发 > C++ > c#'产量”关键字如何简化命令式迭代?

c#'产量”关键字如何简化命令式迭代?

Susan Sarandon
发布: 2025-01-27 17:31:10
原创
340 人浏览过

How Does the C# `yield` Keyword Simplify Imperative Iteration?

理解C#的yield关键字实现高效迭代

C# 2.0 中引入的 yield 关键字显着简化了命令式迭代。 考虑这个例子,说明它在创建 IEnumerable<T>:

中的用途
<code class="language-csharp">IEnumerable<object> FilteredList()
{
    foreach(object item in FullList)
    {
        if(IsItemInPartialList(item))
            yield return item;
    }
}</code>
登录后复制

此函数不会在内存中构建完整的列表。相反,它返回一个迭代器。每次调用代码中的 foreach 循环请求下一个项目时,FilteredList() 函数都会从中断处恢复执行,评估下一个 item 并仅在满足条件时才返回它。

让我们看一个更简单的例子:

<code class="language-csharp">public void Consumer()
{
    foreach(int i in Integers())
    {
        Console.WriteLine(i);
    }
}

public IEnumerable<int> Integers()
{
    yield return 1;
    yield return 2;
    yield return 4;
    yield return 8;
    yield return 16;
    yield return 16777216;
}</code>
登录后复制

调试这段代码发现Integers()并没有立即完全执行。 它仅执行直到遇到 yield return,返回单个值。 foreachConsumer() 循环的下一次迭代导致 Integers() 恢复,从下一个 yield return 继续。

使用yield的主要好处:

  • 简化迭代:避免手动实现IEnumerableIEnumerator,从而产生更干净、更简洁的代码。
  • 内存效率:值按需生成,最大限度地减少内存使用,在处理大型数据集时特别有用。
  • 提高了可读性:代码的意图变得更加清晰,特别是在处理迭代过程和数据流时。 生成序列的逻辑直接嵌入到方法中。

以上是c#'产量”关键字如何简化命令式迭代?的详细内容。更多信息请关注PHP中文网其他相关文章!

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