KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
How can I write a custom IEnumerator<T> implementation which needs to maintain some state and still get to use iterator blocks to simplify it? The best I can come up with is something like this: public class MyEnumerator<T> : IEnumerator<T> { private IEnumerator<T> _enumerator; public int Position {get; private set;} // or some other custom properties public MyEnumerator() { Position = 0; _enumerator = MakeEnumerator(); } private IEnumerator<T> MakeEnumerator() { // yield return something depending on Position } public bool MoveNext() { bool res = _enumerator.MoveNext(); if (res) Position++; return res; } // delegate Reset and Current to _enumerator as well } public class MyCollection<T> : IEnumerable<T> { IEnumerator<T> IEnumerable<T>.GetEnumerator() { return GetEnumerator(); } public MyEnumerator<T> GetEnumerator() { return new MyEnumerator<T>(); } ... }
Tags (comma-separated)
Save Edits
Cancel