C#: yield 返回范围/集合

标签 c# .net yield

我经常使用 yield return 关键字,但是当我想将范围添加到 IEnumerable 时,我发现缺少它。这是我想做的一个简单示例:

IEnumerable<string> SomeRecursiveMethod()
{
    // some code 
    // ...
    yield return SomeRecursiveMethod();
}

这自然会导致错误,可以通过执行一个简单的循环来解决。有一个更好的方法吗?循环感觉有点笨拙。

最佳答案

不,恐怕没有。 F# 确实通过 yield! 支持这一点,但在 C# 中没有等效项 - 您基本上必须使用循环。对不起...我感觉到你的痛苦。我在 one of my Edulinq blog posts 中提到过它,它会使事情变得更简单。

请注意,递归地使用 yield return 可能会很昂贵 - 请参阅 Wes Dyer's post on iterators了解更多信息(并提到四年前正在考虑的“yield foreach”......)

关于C#: yield 返回范围/集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5415902/

相关文章:

c# - 如何在 .NET Core 中设置全局环境变量(用户范围或系统范围)

c# - 为 Array 的值打印 X

c# - 在 highcharts 中的图表 Canvas 外部显示图表图例

c# - 异步方法中的可观察集合

Python 产量生成器函数

PHP - json_encode 生成器对象(使用 yield)

c# - Basedir的父目录——NLog配置

c# - 如何在 WPF 中向后播放视频?

.net - Try-Finally block 上的 Final 内的异常

python - Python 中的 cx_Oracle、生成器和线程