yield(C# 参考)
转自 http://msdn.microsoft.com/zh-cn/library/9k7k7cf0.aspx
在语句中使用 yield 关键字,则指示在的方案、运算符或 get 访问器是迭代器。 使用的迭代器对集合的自定义迭代。 下面的示例演示 yield 语句的两种形式。
yield return <expression>; yield break ; |
备注 :
使用一个 yield return 语句返回每个元素一个节点。
使用 foreach 语句或 LINQ 查询,则使用迭代器方法。 foreach 循环的每次迭代调用迭代器方法。 当 yield return 语句在迭代器方法时为止,expression 返回,并且,代码的当前位置保留。 当下次调用迭代器函数时执行从该位置重新启动。
可以使用 yield break 语句结束迭代。
有关迭代器的更多信息,请参见迭代器(C# 和 Visual Basic)。
迭代器方法和 get 访问器
迭代器的声明必须满足以下要求:
-
返回类型必须是 IEnumerable、IEnumerable<T>、IEnumerator或 IEnumerator<T>。
-
该声明不能有任何 ref 或 http://msdn.microsoft.com/zh-cn/library/t3c3bfhx.aspx 参数。
隐式转换必须从表达式的类型。yield return 语句的提供给迭代器的返回类型。
在具有以下特点的方法不能包含 yield return 或 yield break 语句:
-
匿名方法。 有关更多信息,请参见匿名方法(C# 编程指南)。
-
包含不安全的方法块。 有关更多信息,请参见unsafe(C# 参考)。
异常处理
yield return 语句不能位于 try-catch 块。 yield return 语句可以位于在尝试 try-finally 块语句。
yield break 语句可以位于 try 块或 catch finally 块,而不是块。
如果 foreach 主体 (在迭代器方法的外部) 引发异常,finally 在迭代器方法执行块。
转自 http://msdn.microsoft.com/zh-cn/library/9k7k7cf0.aspx
作者:唐小熊
出处:http://www.cnblogs.com/IT-Bear/
关于作者:一头写代码的熊
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接
如有问题,可以通过kumat@foxmail.com 联系我,非常感谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构