i3a*_*non 11
.Net框架中没有确切的等价物,但是MoreLINQ库中有一个:
foreach (var current in MoreEnumerable.Generate(5, n => n + 2).Take(10))
{
Console.WriteLine(current);
}
Run Code Online (Sandbox Code Playgroud)
使用yield
以下方法重建它也非常简单:
public static IEnumerable<T> Iterate<T>(T seed, Func<T,T> unaryOperator)
{
while (true)
{
yield return seed;
seed = unaryOperator(seed);
}
}
Run Code Online (Sandbox Code Playgroud)
yield
能够创建无限枚举器,因为:
在迭代器方法中达到yield return语句时,将返回表达式,并保留代码中的当前位置.下次调用迭代器函数时,将从该位置重新开始执行.
归档时间: |
|
查看次数: |
1660 次 |
最近记录: |