在哪里为MSDN的内置类实现IEnumerable接口的方法?



我一直在MSDN中搜索,试图看到一个实现IEnumerator方法的类。例如,类。是否可以可视化实现 IEnumerator 接口的帮助程序类,以便来自 IEnumerable 接口的 GetEnumerator() 能够返回此类的实例并且 foreach 功能可用? 我意识到这没有实际用途。这只是为了"学术"目的,以便更好地了解语言开发人员如何构建它。

ArrayList

被认为是平台不可或缺的一部分,因此您不一定会在您认为应该在的地方找到它。(它也已过时,您应该更喜欢通用集合,例如List<T>.)例如,在 .NET 中,它不是在集合解决方案中定义的,而是在mscorlib中定义的,在mscorlib/system/collections/arraylist.cs中。GetEnumerator的定义基本上只是一行:

return new ArrayListEnumeratorSimple(this);

还有一个重载遍历子列表,它本质上也是一行:

return new ArrayListEnumerator(this, index, count);

ArrayListEnumerator的定义同样相当简单,如果你去掉参数验证之类的,它基本上只是:

public bool MoveNext() {
if (index < endIndex) {
currentElement = list[++index];
return true;
}
else {
index = endIndex + 1;
}
return false;
}
public Object Current => currentElement;

具有讽刺意味的是,ArrayListEnumeratorSimple的定义更加复杂,但本质上仍然相同。

请注意,.NET 源代码相当旧,ArrayList是其中最古老的类之一。

对于更现代的角度来看,您可以查看 CoreFX 在src/System.Runtime.Extensions/src/System/Collections/ArrayList.cs中的实现,但除了更现代的编码风格,以及使用哨兵值而不是null,它是完全相同的。

最新更新