如果我只想使用IEnumerable通用版本,则不仅要实现IEnumerator<T> GetEnumerator()
,还必须实现IEnumerator GetEnumerator()
,后者似乎是多余的
答案 0 :(得分:2)
IEnumerable
接口在1.1 .net框架中引入。
但仅适用于2.0中的通用版本IEnumerable<T>
(带有通用)。因此,它是向后兼容。有旧版代码,仅接受IEnumerable
:
void Method(IEnumerable list)
{
foreach(var item in list)
{
Console.WriteLine(item);
}
}
因此,例如,如果IEnumerable<T>
未实现IEnumerable
,则无法使用此方法传递List<int>
。
答案 1 :(得分:2)
基本上,有两个原因:
IEnumerable
,但不能处理IEnumerable<T>
。是的,现代API被设计为使用泛型,但我们有时会需要使用旧版API。IEnumerable
在这里可以。数据绑定是最明显的一种。