首页 > 编程语言 >探秘C#中的yield关键字

探秘C#中的yield关键字

时间:2023-06-05 22:00:56浏览次数:40  
标签:count return C# text yield int static 探秘

 

在"C#中,什么时候用yield return"中,我们了解到:使用yield return返回集合,不是一次性加载到内存中,而是客户端每调用一次就返回一个集合元素,是一种"按需供给"。本篇来重温yield return的用法,探秘yield背后的故事并自定义一个能达到yield return相同效果的类,最后体验yield break的用法。

class Program
    {
          static Random r = new Random();
          static IEnumerable<int> GetList(int count)
          {
                List<int> list = new List<int>();
                for (int i = 0; i < count; i++)
                {
                      list.Add(r.Next(10));
                }
                return list;
        }        static IEnumerable<int> GetList2(int count)
        {
              for (int i = 0; i < count; i++)
              {
                    yield return r.Next(10);
              }
        }
        static void Main(string[] args)
        {              foreach (int item in GetList2(5))
                  Console.WriteLine(item);              Console.WriteLine("Hello World!");
        }        void test()
        {
              Func<string, int> del3 = (string text) => text.Length;              // 可以省略参数类型string,把上面代码再简化为:
              Func<string, int> del4 = (text) => text.Length;              int M = del3("FFFFFJJJJJ");
              int n = del4("2222");
        }    }


标签:count,return,C#,text,yield,int,static,探秘
From: https://blog.51cto.com/u_4018548/6419811

相关文章

  • CVE-2023-2825-GitLab目录穿越poc
    GitlabCVE-2023-2825目录穿越漏洞前言昨天GitLab出了一个版本目录穿越漏洞(CVE-2023-2825),可以任意读取文件。当时我进行了黑盒测试并复现了该漏洞。“Anunauthenticatedmalicioususercanuseapathtraversalvulnerabilitytoreadarbitraryfilesontheserver......
  • cpufreq的初始化讲解
    cpufreq初始化cpufreq的初始化,通过调用cpufreq_register_driver接口,完成一系列的policy、governor和driver配置。驱动moduleinit入口driver编写module_init的函数,在初始化中使用cpufreq_register_driver注册驱动cpufreq_register_driver中会完成增加总线设备、节点创建等操......
  • Golang高性能编程--slice的学习总结
    在go语言中,数组变量属于值类型,因此当一个数组变量被复制或者传递时,实际上会复制整个数组。eg,将a赋值给b,修改a中的元素,并不会修改b中的元素。为了避免复制数组,一般会传递指向数组的指针。packagemainimport"fmt"funcmain(){ a:=[...]int{1,2,3} b:=a a[0]=100......
  • ChatGpt玩法(一):prompt使用的重要性
    前言登录https://www.topgpt.one即可免费体验ChatGPT带来的强大魅力。ChatGpt是一个强大的自然语言处理工具,可以用于多种任务,如文本生成、问答系统以及对话生成等等。其中,prompt是ChatGpt中非常重要的概念,它是指用户输入的“提示词”,可以帮助模型更好地理解用户的意图和需求。......
  • Net Core - EntityFrameWorkCore
    一 mac执行dotnetef报错dotnettoolinstall--globaldotnet-ef二 1.增加迁移dotnetefmigrationsadd名字--contextDBContext名字2.删除最近一次的迁移  >dotnetefmigrationsremove--contextDBContext名字3.更新数据库  >dotnetefdatabaseup......
  • webpack中的Loader 加载器
    原文点此跳转loader用于对模块的源代码进行转换。loader可以使你在import或"load(加载)"模块时预处理文件。因此,loader类似于其他构建工具中"任务(task)",并提供了处理前端构建步骤的得力方式。loader可以将文件从不同的语言(如TypeScript)转换为JavaScript或将内联图像......
  • C语言编程语法—输入与输出
    当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。当我们提到输出时,这意味着要在屏幕上、打印机上或任意文件中显示一些数据。C语言提供了一系列内置的函数来输出数......
  • GitOps 最佳实践(下)| 基于 Amazon EKS 构建 CI/CD 流水线
    了解了 GitOps的概念以及CI/CD流水线的架构,完成了构建GitOps风格的CI/CD流水线的前两部分,恭喜开发者们!我们一起在GitOps最佳实践的道路上已经实现了大半。接下来,我们一起看看构建CI/CD流水线最佳实践的后两个部分:通过IaC部署云基础架构在AmazonEKS集群上部署......
  • Docker 和虚拟机的区别
    虚拟机基础设施(Infrastructure)。它可以是你的个人电脑,数据中心的服务器,或者是云主机。主操作系统(HostOperatingSystem)。你的个人电脑之上,运行的可能是MacOS,Windows或者某个Linux发行版。虚拟机管理系统(Hypervisor)。利用Hypervisor,可以在主操作系统之上运行多个不同的......
  • 一分钟学一个 Linux 命令 - mkdir 和 touch
    前言大家好,我是god23bin。欢迎来到《一分钟学一个Linux命令》系列,今天需要你花两分钟时间来学习下,因为今天要讲的是两个命令,mkdir和touch命令。前一个命令是操作目录的,后一个命令是操作文件的。建议学完手敲一篇加深记忆噢!mkdir什么是mkdir命令?mkdir是makedirect......