2012-04-19 18 views

答えて

4

で、組み込まれていないが、書きやすい:

public static IEnumerable<T> RepeatInfinitely<T>(this IEnumerable<T> sequence) 
{ 
while(true) { 
    foreach(var item in sequence) 
    yield return item; 
} 
} 
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(); 
    } 
} 
関連する問題