当前位置: 首页 > news >正文

C# 中 yield关键字的使用

yield return有以下优点:
每次迭代时生成一个值,并且在下次迭代时继续从上次离开的地方开始。
延迟执行:只有在实际需要时才会生成下一个值,这对于处理大量数据非常有用。
节省内存:不需要一次性将所有数据加载到内存中。

 IEnumerable<int> GenerateSequence(int max)
{for (int i = 0; i < max; i++){Thread.Sleep(300);yield return i;}
}List<int> GenerateSequence1(int max)
{List<int> ints = new List<int>();for (int i = 0; i < max; i++){Thread.Sleep(300);ints.Add(i);}return ints;
}// 使用
foreach (var number in GenerateSequence1(100000))
{Console.WriteLine(number);
}foreach (var number in GenerateSequence(100000))
{Console.WriteLine(number);
}

结果就是GenerateSequence1 会卡死,GenerateSequence 每有一个元素进入IEnumerable, 都会打印出来

http://www.lryc.cn/news/461134.html

相关文章:

  • YoloDotNet 的基本使用方法详解
  • 0x12 Dapr Dashboard configurations 未授权访问漏洞 CVE-2022-38817
  • Android activity 启动流程
  • 使用 Go 语言实现 WebSocket的核心逻辑
  • Linux下的杀毒软件介绍
  • JSONP详解
  • Leetcode—1115. 交替打印 FooBar【中等】(多线程)
  • Visual Studio Code基础:使用debugpy调试python程序
  • 超全!一文详解大型语言模型的11种微调方法
  • C 主要函数解析
  • vue3学习:数字时钟遇到的两个问题
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)3.7-3.8
  • 【Linux】最基本的字符设备驱动
  • 利用 Llama 3.1模型 + Dify开源LLM应用开发平台,在你的Windows环境中搭建一套AI工作流
  • Docker常用命令分享二
  • 【一步步开发AI运动小程序】二十、AI运动小程序如何适配相机全屏模式?
  • [Java基础] 运算符
  • [001-02-018].第05节:数据类型及类型转换
  • Netty基础
  • 602,好友申请二:谁有最多的好友
  • 【Matlab算法MATLAB实现的音频信号时频分析与可视化(附MATLAB完整代码)
  • 界面耻辱纪念堂--可视元素03
  • 国产龙芯处理器选择迅为2K1000开发板有资料
  • MySQL 命令(持续更新)
  • Linux下Docker方式Jenkins安装和配置
  • 低代码框架参考
  • 2024 年 9 月区块链游戏研报:行业回暖,Telegram 游戏引发热潮
  • python爬虫登录校验之滑块验证、图形验证码(OCR)
  • (一)Python程序结构
  • 二叉树——相同的树