gpt4 book ai didi

C#无限迭代

转载 作者:太空狗 更新时间:2023-10-29 22:22:21 25 4
gpt4 key购买 nike

在 C# 中有什么类似于 Java 的 Stream.iterate 的吗?我能找到的最接近的东西是 Enumerable.Range 但它有很大的不同。

我问的原因是我一直在看一些 presentation关于良好的编程原则,并且有一个关于声明式代码与命令式代码的线程。引起我注意的是一种可以生成伪无限数据集的方法。

最佳答案

在 .Net 框架中没有完全相同的,但在 MoreLINQ library 中有一个:

foreach (var current in MoreEnumerable.Generate(5, n => n + 2).Take(10))
{
Console.WriteLine(current);
}

使用 yield 重新创建它也非常简单:

public static IEnumerable<T> Iterate<T>(T seed, Func<T,T> unaryOperator)
{
while (true)
{
yield return seed;
seed = unaryOperator(seed);
}
}

yield 能够创建无限枚举器,因为:

When a yield return statement is reached in the iterator method, expression is returned, and the current location in code is retained. Execution is restarted from that location the next time that the iterator function is called.

来自 yield (C# Reference)

关于C#无限迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26802669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com