首页 / 知识
关于c#:yield在现实生活中有哪些应用?
2023-04-12 13:51:00

What are real life applications of yield?我知道 (理想情况下是无法通过其他方式解决的问题) 我意识到这是一个老问题(乔恩·斯凯特之前?),但是我最近一直在考虑这个问题。不幸的是,目前的答案(我认为)并未提及yield语句的最明显优势。 yield语句的最大好处是,它使您可以比使用标准列表更有效地使用内存来遍历非常大的列表。 例如,假设您有一个数据库查询返回100万行。您可以使用DataReader检索所有行并将它们存储在List中,因此需要内存的list_size * row_size个字节。 或者您可以使用yield语句创建一个Iterator,并且一次只能在内存中存储一??行。实际上,这使您能够对大量数据提供"流"功能。 此外,在使用Iterator的代码中,您使用了一个简单的foreach循环,可以根据需要决定从循环中退出。如果您确实要早点休息,则只需要前5行时就不必强制检索整个数据集。 关于:
yield语句不会为您提供使用您自己的自定义迭代器实现所无法完成的任何工作,但它省去了编写通常所需的复杂代码的麻烦。只有很少的问题(如果有的话)解决不了一种以上的方法。 以下是一些最近的问题和答案,提供了更多详细信息: 增加了关键字价值吗? 在LINQ之外,产量是否有用? 实际上,我在我的网站IdeaPipe 上以非传统方式使用它
因此,基本上,它会检查查看该想法是否当前得到授权,是否返回该想法。如果不是,则将其跳过。这使我可以缓存构思,但仍将构思显示给授权的用户。否则,当它们仅每1小时重新排列一次时,我将不得不根据权限每次都重新拉它们。 一种有趣的用途是作为异步编程的一种机制,特别是对于需要多个步骤并且在每个步骤中需要相同数据集的任务。这方面的两个示例是Jeffery Richters AysncEnumerator第1部分和第2部分。并发和协调运行时(CCR)也利用了该技术CCR迭代器。 使用收益率可以防止降级为具体类型。这很容易确保集合的使用者不会对其进行操作。 yield的另一个很好的用途是对IEnumerable的元素执行功能,并返回不同类型的结果,例如:
Enumerable类上的 LINQ \\运算符实现为使用yield语句创建的迭代器。它允许您链接Select()和Where()之类的操作,而无需实际枚举任何内容,直到您在循环中实际使用枚举器(通常通过使用foreach语句)为止。另外,由于如果您决定停止中间收集,则在调用IEnumerator.MoveNext()时仅计算一个值,因此可以节省计算所有结果的性能。 迭代器还可以用于实现其他类型的惰性求值,其中仅在需要时才对表达式求值。您还可以将yield用于更多喜欢的东西,例如协程。 您也可以使用
|
最新内容
相关内容
python爬虫和数据分析有哪些第三方
python爬虫和数据分析有哪些第三方库?,培训,爬虫,和数,pythonjava语法区别有哪些
pythonjava语法区别有哪些,名称,培训,数字,数据,能存,标准,数据类型,语法,字符串,分号,1、变量java中定义变量,inta=0;而python中为a=0;由此可python有哪些推荐使用的装饰器?
python有哪些推荐使用的装饰器?,单位,时间,代码,标准,灵活,软件,数据,连续,培训,模块,众所周知,Python语言非常强大,有很多优点。值得一提的是,它python有哪些高级特性?
python有哪些高级特性?,培训,特性,python有哪些方法可以解压文件?
python有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大。python爬虫框架有哪些?
python爬虫框架有哪些?,网站,数据,工具,信息,系统,网络,主体,实时,历史数据,工作,Python被称为爬虫首选语言的主要原因是Python拥有众多的爬虫python有哪些设计模式?
python有哪些设计模式?,设计,策略,工厂,系统,代码,统一,培训,模式,软件,通信,设计模式大家一定很熟悉,它是一套被反复使用、多数人知晓的、经过python新手常犯错误有哪些
python新手常犯错误有哪些,代码,有限,培训,标准,项目,波浪,情况,冒号,错误,同学,下面总结新手学习python经常遇到的坑,需要的同学可以参考错误pythoneval函数作用
pythoneval函数作用,培训,字符串,函数,作用,表达式,对象,结果,引号,计算器,以上,pythoneval(str)函数很强大,官方解释为:将字符串str当成有效的python错误类型有哪些
python错误类型有哪些,异常,系统,培训,错误,代码,标准,检测,类型,程序,逻辑,python的错误有语法错误和逻辑错误语法错误程序执行过程中,pythonpython字符串连接的方法有哪些
python字符串连接的方法有哪些,培训,字符串,基础,方式,两个,变量,函数,空白,语言,功能,python中有很多字符串连接方式,下面总结一下:最原始的字python字符串有哪些表达方式
python字符串有哪些表达方式,培训,字符串,斜线,方式,引号,备注,字符,中间,后面,表示,主要是python中字符串的几种表达,表示方式。python的几种