fork(1) download
  1. // based on https://h...content-available-to-author-only...r.ru/post/209914/
  2. // for http://ru.stackoverflow.com/a/589005/178988
  3.  
  4. using System;
  5.  
  6. public class Container
  7. {
  8. public Enumerator GetEnumerator()
  9. {
  10. return new Enumerator();
  11. }
  12. }
  13.  
  14. public struct Enumerator : IDisposable
  15. {
  16. public bool MoveNext()
  17. {
  18. return false;
  19. }
  20.  
  21. public object Current
  22. {
  23. get { return null; }
  24. }
  25.  
  26. public void Dispose()
  27. {
  28. Console.WriteLine("Dispose");
  29. }
  30. }
  31.  
  32. public class Test
  33. {
  34. public static void Main()
  35. {
  36. var items = new Container();
  37.  
  38. var enumerator = items.GetEnumerator();
  39.  
  40. using (enumerator as IDisposable)
  41. {
  42. var exists = enumerator.MoveNext();
  43.  
  44. if (exists)
  45. {
  46. do
  47. {
  48. var item = enumerator.Current;
  49. exists = enumerator.MoveNext();
  50.  
  51. Console.WriteLine(exists ? "{0}" : "{0} is the last one", item);
  52. } while (exists);
  53. }
  54. }
  55.  
  56. Console.WriteLine("Done");
  57. }
  58. }
Success #stdin #stdout 0.01s 29664KB
stdin
Standard input is empty
stdout
Dispose
Done