赞
踩
在C#中,yield 关键字是特别用于迭代器块和方法中的,它允许你逐个返回序列中的元素,而不是一次性返回整个集合。使用 yield 可以显著提高处理大数据集或进行复杂迭代时的性能和内存效率,因为它允许按需生成和返回数据,而不是预先生成整个数据集。
yield return 语句用于在迭代器块中返回一个元素,并且每次迭代时只执行到下一个 yield return 语句或迭代器块的末尾。当迭代器块执行完毕时,迭代结束。
public static IEnumerable<int> GetNumbers()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
// 使用
foreach (var number in GetNumbers())
{
Console.WriteLine(number);
}
GetNumbers 方法使用 yield return 逐个返回从0到9的数字。每次迭代调用 GetNumbers() 方法时,它都会从上次停止的地方继续执行,直到所有数字都被返回。
yield break 语句用于提前退出迭代器块。如果在迭代器块中遇到 yield break 语句,迭代器将停止执行,并且不会返回任何更多的元素。
public static IEnumerable<int> GetNumbersUpTo(int limit) { for (int i = 0; i < limit; i++) { if (i == 5) // 假设我们只想要前5个数字 { yield break; } yield return i; } } // 使用 foreach (var number in GetNumbersUpTo(10)) { Console.WriteLine(number); }
GetNumbersUpTo 方法在返回第5个数字后立即使用 yield break 退出迭代器块,因此不会返回任何超过5的数字。
注意事项:
不能使用 yield 的情况:
“笑对人生,智慧同行!博客新文出炉,微信订阅号更新更实时,等你笑纳~”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。