0

看看 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 输出?

4

1 回答 1

4

不幸的是没有。

在 F# 中,您可以执行类似的操作

yield! innerMethod(i)

但在 C# 中没有等价物。

我的意思是,在这种特殊情况下,您可以将方法替换为:

 IEnumerable<int> outerMethod(int parameter)
 {
     return Enumerable.Range(1, parameter)
                      .SelectMany(x => innerMethod(x));
 }

但我希望你想要一种更通用的方式来做到这一点。(如果这有帮助,那就太好了!)

于 2009-07-22T14:12:47.787 回答