返回类型接口,用于实现的方法,Ienumerator

时间:2015-10-12 00:07:18

标签: c# asp.net .net generics collections

GetEnumerator返回类型是接口本身,即Ienumerable,想知道当接口可以是方法的返回类型时它意味着什么;特别是当它在界面中定义时。

Ienumerator enum = arrayList.GetEnumerator();

1 个答案:

答案 0 :(得分:1)

如果我理解正确的话。 ArrayList没有实现 IEnumerator ,而是 IEnumerable

public class ArrayList : IList, ICollection, IEnumerable, ICloneable 

的IEnumerable

public interface IEnumerable
{
    IEnumerator GetEnumerator();
}

编辑:

IEnumerator有一个简单的责任。

  

支持对非泛型集合的简单迭代。

ArrayList的责任是不同的

  

使用大小为的数组实现IList接口   根据需要动态增加。

这可能是维持SRP所必需的。

ArrayList的GetEnumerator()实现可能会返回IEnumerable的实现,它知道ArrayList的实现细节。但是IEnumerator接口后面的客户端隐藏了具体类型。