【发布时间】:2019-07-10 04:56:12
【问题描述】:
c# yield compute 仅在调用者实际需要该特定枚举元素时才会延迟循环的每次迭代的执行。是否可以组合多个这样的收益返回函数,并且仍然向最终调用者公开一个动态枚举集?
public IEnumerable<string> GetDelayedCompute1()
{
// compute ...
foreach(var s in results)
{
yield return s;
}
}
public IEnumerable<string> GetDelayedCompute2()
{
// compute ...
foreach(var s in results)
{
yield return s;
}
}
public IEnumerable<string> GetResults()
{
// how to combine results of GetDelayedCompute1 and GetDelayedCompute2
// and yield return without forcing enumeration
}
【问题讨论】:
-
这与
yield无关——只要您的方法返回IEnumerable<string>并且该方法中没有任何内容强制迭代,那么您会得到相同的结果。你可以做public IEnumerable<string> GetDelayedCompute1() => result.Select(s => s);并得到懒惰的评估。
标签: c# return ienumerable concat yield