我正在实施自己的arraylist课程,当我意识到这一点时,我感到惊讶

public System.Collections.Generic.IEnumerator<T> GetEnumerator() {
    return _array.GetEnumerator();
}

不起作用。数组不在.NET中实现Ienumerator的原因是什么?

有工作吗?

谢谢

有帮助吗?

解决方案

数组确实实现 IEnumerable<T>, ,但这是作为CLI对数组的特殊知识的一部分而完成的。这好像是明确的实现(但不是:在运行时完成)。许多工具不会显示此实现,这在 评论 部分 Array 类概述。

您可以添加演员阵容:

return ((IEnumerable<T>)_array).GetEnumerator();

请注意,较旧 评论 部分。

其他提示

您可以使用通用方法 IEnumerable<T> OfType<T>() 从System.linq名称空间,该名称空间扩展了IEnumerable接口。它将滤除所有类型不同的元素,并返回 IEnumerable<T> collection. 。如果您使用 (IEnumerable<T>)_array 转换操作员,这可能不安全,因为 System.Array (和其他非元素类型)存储类型的项目 System.Object.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top