c# - C#中 "yield"关键字有什么用?

标签 c# syntax yield-return

<分区>

Possible Duplicate:
Proper Use of yield return

C#中yield关键字有什么用?

the MSDN reference没看懂| ...有人可以向我解释一下吗?

最佳答案

我会试着给你举个例子

这是经典的做法,它填充一个列表对象然后返回它:

private IEnumerable<int> GetNumbers()
{
    var list = new List<int>();
    for (var i = 0; i < 10; i++)
    {
        list.Add(i);
    }
    return list;
}

yield 关键字像这样一个一个地返回项目:

private IEnumerable<int> GetNumbers()
{
    for (var i = 0; i < 10; i++)
    {
        yield return i;
    }
}

想象一下调用 GetNumbers 函数的代码如下:

foreach (int number in GetNumbers())
{
   if (number == 5)
   {
       //do something special...
       break;
   }
}

如果不使用 yield,您将不得不从 0-10 生成整个列表,然后将其返回,然后迭代直到找到数字 5。

现在多亏了 yield 关键字,您只会生成数字,直到找到您要查找的数字并跳出循环。

不知道我说的够不够..

关于c# - C#中 "yield"关键字有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270086/

相关文章:

c# - 当ThreadPool构造新线程而不是重用它们时?

javascript - onmouse="抛出错误未捕获语法}之后的 PHP js 函数

c# - 什么时候不使用 yield (return)

c# - using() { } block 中的 yield return 语句 在执行之前处理

c# - 尝试获取 LogWriter 类型的实例时发生激活错误

c# - 使用 Linq 查找列表子集中的下一个元素

c# - 在 C# 中控制或访问打印机的自定义打印机设置(旋转 180 度)

Javascript 面向对象的语法引用

python - Pandas 中双括号 `[[...]]` 和单括号 `[..]` 索引之间的区别

c# - yield 在 lock 语句中返回