yield return 可实现延迟执行,如遍历 GetOddNumbers 时每次按需生成奇数,避免内存浪费。
在 C# 中,yield return 是一种简洁高效的方式来实现自定义迭代器,而无需手动创建集合或实现 IEnumerable 和 IEnumerator 接口。它让方法在每次返回一个元素后暂停执行,下次继续从暂停处恢复,非常适合处理大数据集或需要延迟计算的场景。
使用 yiel
d return 的方法必须返回以下类型之一:
IEnumerableIEnumeratorIEnumerableIEnumerator方法中每遇到一次 yield return,就会向枚举器提供一个值,并暂时退出。当枚举器请求下一个元素时,执行从中断处继续。
public static IEnumerableGetNumbers() { yield return 1; yield return 2; yield return 3; yield return 4; }
调用该方法并遍历:
foreach (int num in GetNumbers())
{
Console.WriteLine(num);
}
// 输出:
// 1
// 2
// 3
// 4
yield return 最大的优势是延迟执行(Lazy Evaluation):元素只在被请求时才生成,而不是一次性全部计算并存储在内存中。
例如,生成 1 到 n 的奇数序列:
public static IEnumerableGetOddNumbers(int max) { for (int i = 1; i <= max; i += 2) { yield return i; } }
即使 max 是 100 万,也不会占用大量内存,因为数字是按需生成的。
常见用途包括遍历树结构、读取大文件、分页数据等。
比如遍历二叉树的中序序列:
public class TreeNode
{
public int Value;
public TreeNode Left;
public TreeNode Right;
public IEnumerable InOrder()
{
if (Left != null)
foreach (int val in Left.InOrder())
yield return val;
yield return Value;
if (Right != null)
foreach (int val in Right.InOrder())
yield return val;
}
}
这种方式代码清晰,且不会一次性构建完整的结果列表。
try 块中含有 catch 子句的环境中使用 yield return。try-finally 使用,用于资源清理。yield return 方法结果,每次都会重新执行逻辑。基本上就这些。合理使用 yield return 能写出更高效、更易读的迭代代码,尤其适合处理流式数据或无限序列。掌握它,能让你的 C# 编程更加灵活。
# 大数据
# c#
# try
# catch
# Lambda
# 接口
# finally
# 匿名方法
# 遍历
# 迭代
# 按需
# 是一种
# 子句
# 能在
# 能让
# 分页
# 自定义
# 只在
相关文章:
如何通过服务器快速搭建网站?完整步骤解析
建站168自助建站系统:快速模板定制与SEO优化指南
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
无锡营销型网站制作公司,无锡网选车牌流程?
C++中引用和指针有什么区别?(代码说明)
网站制作难吗安全吗,做一个网站需要多久时间?
公司网站制作价格怎么算,公司办个官网需要多少钱?
行程制作网站有哪些,第三方机票电子行程单怎么开?
如何在服务器上配置二级域名建站?
北京的网站制作公司有哪些,哪个视频网站最好?
小型网站制作HTML,*游戏网站怎么搭建?
网站网页制作专业公司,怎样制作自己的网页?
制作网站外包平台,自动化接单网站有哪些?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
香港服务器租用每月最低只需15元?
网站制作软件有哪些,制图软件有哪些?
公司网站设计制作厂家,怎么创建自己的一个网站?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
利用JavaScript实现拖拽改变元素大小
实例解析angularjs的filter过滤器
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
非常酷的网站设计制作软件,酷培ai教育官方网站?
如何通过VPS建站实现广告与增值服务盈利?
重庆市网站制作公司,重庆招聘网站哪个好?
建站之星如何优化SEO以实现高效排名?
想学网站制作怎么学,建立一个网站要花费多少?
如何在Golang中指定模块版本_使用go.mod控制版本号
北京制作网站的公司,北京铁路集团官方网站?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
济南专业网站制作公司,济南信息工程学校怎么样?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
如何在企业微信快速生成手机电脑官网?
深圳网站制作的公司有哪些,dido官方网站?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何通过虚拟主机快速完成网站搭建?
如何获取开源自助建站系统免费下载链接?
如何在万网自助建站中设置域名及备案?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
建站之星后台管理:高效配置与模板优化提升用户体验
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
如何通过VPS搭建网站快速盈利?
建站之星好吗?新手能否轻松上手建站?
常州自助建站工具推荐:低成本搭建与模板选择技巧
如何构建满足综合性能需求的优质建站方案?
制作农业网站的软件,比较好的农业网站推荐一下?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
营销式网站制作方案,销售哪个网站招聘效果最好?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
*请认真填写需求信息,我们会在24小时内与您取得联系。