【发布时间】:2017-03-24 03:25:08
【问题描述】:
让FirstMethod 被定义为一个迭代器方法。让SecondMethod 定义为调用FirstMethod,但直接返回结果而不是foreaching 和yielding 它的项目。如果ThirdMethod 对SecondMethod 的结果进行迭代,是否将整个链视为一次迭代,或者要实现这一点,我必须在yield 内部SecondMethod 吗?
例如
IEnumerable<string> FirstMethod()
{
yield return "one";
yield return "two";
yield return "three";
}
IEnumerable<string> SecondMethod()
{
return FirstMethod();
}
IEnumerable<string> ThirdMethod()
{
foreach (string item in SecondMethod())
{
yield return item;
}
}
void Main()
{
foreach (string item in ThirdMethod())
{
Console.WriteLine(item);
}
}
我意识到我仍然会在这个示例中显示所有项目。然而,我担心的是在Main 之前保留迭代器的“惰性”评估。
【问题讨论】:
-
您可以在此处的示例中添加一些
Console.WriteLine()调用并自己回答。