收益率返回和内存管理

时间:2019-02-21 16:13:04

标签: c# yield-return

我遇到一种情况,需要迭代一个未知大小的列表,并对每个元素执行一些逻辑。该列表中的项目来自用户文件。

我的第一种方法是将文件的整个元素解析为sed -i -e 's/bs4./vendors.bs4./g' ./vendors/bs4/builder/_htmlparser.py,从而在内存中分配所有项目,然后遍历这些项目。由于此文件可能很大,因此我试图创建一个替代解决方案,在其中逐行进行迭代。**

我正在考虑使用List<>来实现此目的,但是我不知道它是如何实现的。我的理解是,它将返回项目而不将其全部加载到内存中。我的假设正确吗?我是否通过使用yield return return而不是将整个列表构建到内存中并对其进行迭代来获取内存?

谢谢!

**在这种特殊情况下,由于每次迭代之间的逻辑关系,我不能只读取每一行,对其进行处理,然后移至下一行。

编辑:我想比我的被标记为重复的话题的答案要多一些。

我会尝试澄清:

使用yieldbreturn是否可以将过去迭代的对象保存在内存中?当我调用该方法100次时,是否会将100个返回的对象保存在内存中?还是仅保存了最后一个?

0 个答案:

没有答案