KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm basicly trying to make my class able to iterate using foreach . I read this tutorial. MSDN . It seems very straight forward. However, I have a problem when I want to iterate second time. I debugged it; and it turned out that it doesn't call the Reset() function. Class A class A : IEnumerable, IEnumerator { int[] data = { 0, 1, 2, 3, 4 }; int position = -1; public object Current { get { return data[position]; } } public bool MoveNext() { position++; return (position < data.Length); } public void Reset() { position = -1; } public IEnumerator GetEnumerator() { return (IEnumerator)this; } } When I run the following main function; it never calls Reset() function. So, after one loop I never be able to iterate my class again. Main static void Main(string[] args) { A a = new A(); foreach (var item in a) { Console.WriteLine(item); } Console.WriteLine("--- First foreach finished. ---"); foreach (var item in a) { Console.WriteLine(item); } } Output: 0 1 2 3 4 --- First foreach finished. --- Press any key to continue . . . Any thoughts?
Tags (comma-separated)
Save Edits
Cancel