sin*_*law -2 c# ienumerable infinite-loop
编辑:显然偏离主题...转移到Programmers.StackExchange.com.
这不是一个实际问题,它更像是一个谜.
我很想知道是否有办法实现与以下相同的东西,但不使用yield:
IEnumerable<T> Infinite<T>()
{
while (true) { yield return default(T); }
}
Run Code Online (Sandbox Code Playgroud)
yield关键字mscorlib.dll,System.Core.dll?不确定还包括哪些内容).但是,如果您找到一些其他.NET程序集(WPF ?!)的解决方案,我也很感兴趣.我最接近的是:
IEnumerable<int> infinite = null;
infinite = new int[1].SelectMany(x => new int[1].Concat(infinite));
Run Code Online (Sandbox Code Playgroud)
这是"正确的",但在14399次迭代通过可枚举(非常无限)之后会遇到StackOverflowException.
我认为由于CLR 缺乏尾递归优化,可能无法做到这一点.证明会很好:)
yield从你的问题例如和转储到Visual Studio.| 归档时间: |
|
| 查看次数: |
557 次 |
| 最近记录: |