仍在努力寻找在实际情况下我会在哪里使用“yield”关键字。
我看到这个话题了
What is the yield keyword used for in C#?
但在接受的答案中,他们将此作为示例,其中有人围绕 Integers() 进行迭代
public IEnumerable<int> Integers()
{
yield return 1;
yield return 2;
yield return 4;
yield return 8;
yield return 16;
yield return 16777216;
}
但为什么不直接使用
list<int>
在这里。看起来更直接..
最佳答案
如果您构建并返回一个列表(假设它有 100 万个元素),那将是一大块内存,并且还需要进行创建它的工作。
有时调用者可能只想知道第一个元素是什么。或者他们可能希望在获得它们时将它们写入文件,而不是在内存中构建整个列表然后将其写入文件。
这就是为什么使用 yield return 更有意义。构建整个列表并返回它看起来并没有什么不同,但它非常不同,因为在调用者可以查看其中的第一项之前,不必在内存中创建整个列表。
当来电者说:
foreach (int i in Integers())
{
// do something with i
}
每次循环需要一个新的 i 时,它都会运行更多 Integers() 中的代码。该函数中的代码在遇到 yield return
语句时“暂停”。
关于c# - yield 关键字增值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/384392/