class CountingEnumerableExample
{
class CountingEnumerable : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
return new CountingEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
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()
{
throw new NotSupportedException();
}
public void Dispose()
{
}
}
static void Main()
{
CountingEnumerable counter = new CountingEnumerable();
foreach (int x in counter)
{
Console.WriteLine(x);
}
}
} public IEnumerator<int> GetEnumerator()
{
return new CountingEnumerator();
}
隐式实现 IEnumerable<T>
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}显式实现 IEnumerable 滴哦用了 IEnumerable<T> GetEnumerator()
public int Current
{
get { return current; }
}隐式实现IEnumerator<T>.Current
object IEnumerator.Current
{
get { return Current; }
}显式实现 IEnumerator.Current 调用了 IEnumerator<T>.Current
object IEnumerator.Current
{
get { return Current; }
} CountingEnumerable counter = new CountingEnumerable();证明可枚举类型能正常工作
实现泛型枚举必须经受的考验
输出
0
1
2
3
4
5
6
7
8
9
object IEnumerator.Current
{
get { return Current; }
}版权声明:本文为eyetired原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。