5

我和朋友讨论了 PHP 的InfiniteIterator

在 .NET 世界中是否有它的等价物?

4

2 回答 2

4

不是内置但易于编写:

public static IEnumerable<T> RepeatInfinitely<T>(this IEnumerable<T> sequence)
{
 while(true) {
  foreach(var item in sequence)
   yield return item;
 }
}
于 2012-04-19T00:23:50.293 回答
1

你可以自己滚动。

public class InfiniteEnumerator: System.Collections.IEnumerator
{
    private System.Collections.IEnumerator  _m_enumerator;
    public InfiniteEnumerator(System.Collections.IEnumerator enumerator)
    {
        _m_enumerator = enumerator;
    }

    public object Current
    {
        get { return _m_enumerator.Current; }
    }

    public bool MoveNext()
    {
        if (!_m_enumerator.MoveNext())
        {
            _m_enumerator.Reset();
            return _m_enumerator.MoveNext();
        }
        else
        {
            return true;
        }
    }

    public void Reset()
    {
        _m_enumerator.Reset();
    }
}
于 2012-04-19T00:28:36.683 回答