C# 中 yield关键字的使用

yield return有以下优点:

每次迭代时生成一个值,并且在下次迭代时继续从上次离开的地方开始。

延迟执行:只有在实际需要时才会生成下一个值,这对于处理大量数据非常有用。

节省内存:不需要一次性将所有数据加载到内存中。

csharp 复制代码
 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, 都会打印出来

相关推荐
冷雨夜中漫步8 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
暖馒10 小时前
Modbus应用层协议的深度剖析
网络·网络协议·c#·wpf·智能硬件
m0_7369191010 小时前
C++代码风格检查工具
开发语言·c++·算法
2501_9449347310 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
黎雁·泠崖11 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_7634724612 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
TechWJ12 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
lly20240613 小时前
C++ 文件和流
开发语言
m0_7066532313 小时前
分布式系统安全通信
开发语言·c++·算法
寻寻觅觅☆13 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++