fork download
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4.  
  5. class SharedEnumerator<T> : IEnumerable<T>
  6. {
  7. IEnumerator<T> iter;
  8. public SharedEnumerator(IEnumerator<T> iter) { this.iter = iter; }
  9. public IEnumerator<T> GetEnumerator() { return iter; }
  10. IEnumerator IEnumerable.GetEnumerator() { return iter; }
  11. }
  12.  
  13. public class Test
  14. {
  15. static IEnumerable<string> Generate()
  16. {
  17. yield return "A";
  18. yield return "B";
  19. yield return "C";
  20. }
  21.  
  22. public static void Main()
  23. {
  24. var shared = new SharedEnumerator<string>(Generate().GetEnumerator());
  25. foreach (var outer in shared)
  26. {
  27. Console.WriteLine(outer);
  28. if (outer == "B")
  29. {
  30. foreach (var inner in shared)
  31. Console.WriteLine(" " + inner);
  32. }
  33. }
  34. }
  35. }
Success #stdin #stdout 0.02s 33776KB
stdin
Standard input is empty
stdout
A
B
    C