关于IEnumerable <T>的问题

Abe*_*Abe 3 c# c#-3.0

我注意到IEnumerable(Generics)需要实现2个方法:

1. IEnumerator<T> GetEnumerator()

2. IEnumerable.GetEnumerator()方法

(http://msdn.microsoft.com/en-us/library/19e6zeyy.aspx)

什么是#2以及我应该如何定义/实现它?

从我玩一些代码,似乎在foreach循环中调用IEnumerator GetEnumerator().#2 IEnumerable.GetEnumerator在哪里发挥作用?

我正在完成配方6.1在Oreilly的C#3.0 Cookbook中创建一个泛型类型的迭代器,我收到一个错误,因为#2没有实现(它没有包含在配方代码中).

谢谢!

spo*_*son 9

第一个是通用的GetEnumerator,而第二个是非泛型的.它们在功能上做同样的工作,但非泛型只能返回一个object类型.

实现这些的最简单方法是实现通用版本,然后为非泛型提供:

IEnumerator IEnumerable.GetEnumerator() {
   return GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)