Iterator.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace SharpCifs.Util.Sharpen
  5. {
  6. public interface ITerator
  7. {
  8. bool HasNext();
  9. object Next();
  10. void Remove();
  11. }
  12. public abstract class Iterator<T> : IEnumerator<T>, ITerator
  13. {
  14. private T _lastValue;
  15. object ITerator.Next()
  16. {
  17. return Next();
  18. }
  19. public abstract bool HasNext();
  20. public abstract T Next();
  21. public abstract void Remove();
  22. bool IEnumerator.MoveNext()
  23. {
  24. if (HasNext())
  25. {
  26. _lastValue = Next();
  27. return true;
  28. }
  29. return false;
  30. }
  31. void IEnumerator.Reset()
  32. {
  33. throw new NotImplementedException();
  34. }
  35. void IDisposable.Dispose()
  36. {
  37. }
  38. T IEnumerator<T>.Current
  39. {
  40. get { return _lastValue; }
  41. }
  42. object IEnumerator.Current
  43. {
  44. get { return _lastValue; }
  45. }
  46. }
  47. }