GetEnumerator返回类型是接口本身,即Ienumerable,想知道当接口可以是方法的返回类型时它意味着什么;特别是当它在界面中定义时。
Ienumerator enum = arrayList.GetEnumerator();
答案 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接口后面的客户端隐藏了具体类型。