class CountingEnumerable : IEnumerable<int>
{
#region IEnumerable<int> 成员
public IEnumerator<int> GetEnumerator()
{
return new CountingEnumerator();
}
#endregion
#region IEnumerable 成员
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
#endregion
}
class CountingEnumerator : IEnumerator<int>
{
int current = -1;
public bool MoveNext()
{
current++;
return current < 10;
}
public int Current { get { return current; } }
object IEnumerator.Current { get { return Current; } }
public void Reset()
{
current = -1;
}
public void Dispose() { }
}
class Program
{
static void Main(string[] args)
{
CountingEnumerable counter = new CountingEnumerable();
foreach (int x in counter)
{
Console.WriteLine(x);
}
}
}