我注意到 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/