返回 IEnumerable 的方法可以从具有相同返回类型的另一个方法获取其输出吗?

发布于 2024-07-29 00:17:36 字数 474 浏览 4 评论 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 输出?

Behold the C# code:

 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;
         }
     }
 }

The question is: There is a way for outerMethod have the same output without iterating over innerMethod output?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

飞烟轻若梦 2024-08-05 00:17:36

不幸的是没有。

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

yield! innerMethod(i)

,但在 C# 中没有等效的操作。

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

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

但我希望您想要一种更通用的方法来实现它。 (如果这有帮助,那就太好了!)

Unfortunately not.

In F# you could do something like

yield! innerMethod(i)

but there's no equivalent in C#.

I mean, in this particular case you could replace the method with:

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

but I expect you wanted a more general purpose way of doing it. (If that helps though, great!)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文