看看C#代码:
IEnumerable<int> innerMethod(int parameter)
{
foreach(var i in Enumerable.Range(0, parameter))
{
yield return i;
}
}
IEnumerable<int> outerMethod(int parameter)
{
foreach(var i in Enumerable.Range(1, parameter))
{
foreach(var j in innerMethod(i))
{
yield return j;
}
}
}
问题是:outerMethod有一种方法可以在没有迭代innerMethod输出的情况下获得相同的输出吗?
答案 0 :(得分:4)
不幸的是没有。
在F#中,您可以执行类似
的操作yield! innerMethod(i)
但C#中没有相应的内容。
我的意思是,在这种特殊情况下,你可以用以下方法替换方法:
IEnumerable<int> outerMethod(int parameter)
{
return Enumerable.Range(1, parameter)
.SelectMany(x => innerMethod(x));
}
但我希望你想要一个更通用的方法。 (如果这有帮助,那太好了!)