我注意到 IEnumerable (Generics) 需要实现两种方法:

1. IEnumerator<T> GetEnumerator()

2. IEnumerable.GetEnumerator() 方法

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

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

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

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

谢谢!

最佳答案

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

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

IEnumerator IEnumerable.GetEnumerator() {
   return GetEnumerator();
}

关于c# - 关于 IEnumerable<T> 的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3189717/

10-11 14:38