using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { CountingEnumerable counter = new CountingEnumerable(); foreach (int x in counter) { Console.WriteLine(x); } Console.ReadKey(); } } class CountingEnumerable : IEnumerable<int> { public IEnumerator<int> GetEnumerator() { return new CountingEnumerator(); } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } } class CountingEnumerator : IEnumerator<int> { int current = -1; public int Current { get { return current; } } object System.Collections.IEnumerator.Current { get { return Current; } } public bool MoveNext() { current++; return current < 10; } public void Reset() { current = -1; } public void Dispose() { } } }