C#使用 yield 关键字提升迭代性能与效率
前言
yield 关键字在 C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,减少了内存占用,并允许在迭代时执行复杂逻辑。
传统迭代和 yield 迭代方式对比
咱们来看看传统迭代方式和 yield 关键字迭代方式对比,是否如传说中的代码实现起来更简洁和高效:
输出结果:
yield 延迟加载按需获取数据
yield 关键字可以通过延迟执行的方式,仅在实际需要时生成数据,从而提高了性能和效率。
输出结果:
yield break 显式示迭代结束
yield break:显式示迭代结束,如以下示例所示:
什么情况不能使用 yield 关键字
带有 in、ref 或 out 参数的方法。
Lambda 表达式和匿名方法。
在 C# 13 之前,yield 在具有 unsafe 块的任何方法中都无效。从 C# 13 开始,可以在包含 unsafe 块的方法中使用 yield,但不能在 unsafe 块中使用。
不能在 catch 和 finally 块中使用 yield return 和 yield break。
不能在具有 catch 块的 try 块中使用 yield return 和 yield break。
可以在只有 finally 块的 try 块中使用 yield return 和 yield break。
完整示例代码
https://github.com/YSGStudyHards/DotNetGuide/tree/main/DotNetGuidePractice
参考文章
https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/statements/yield
版权声明: 本文为 InfoQ 作者【追逐时光者】的原创文章。
原文链接:【http://xie.infoq.cn/article/1ff3a8a440b3849fe39887f4b】。文章转载请联系作者。







评论