2

我在 Delphi 2009 中有一个自定义的 TObjectList 后代,我想稍微玩一下它的枚举器并向 MoveNext 方法添加一些过滤功能,以使其跳过某些对象。MoveNext 由 DoMoveNext 调用,它是一个虚拟方法,所以这应该不难重写……除了一件事。TObjectList 的 TEnumerator 不是它自己的类;它在 TObjectList 声明中声明为嵌套类型。

有什么简单的方法可以在我的后代类中覆盖 TEnumerator.DoMoveNext,还是我必须重新实现整个 TEnumerator?这不是一个很大的课程,但如果可以的话,我宁愿将冗余保持在最低限度......

4

2 回答 2

8

枚举器是它自己的类。它只有一个嵌套范围。要为其编写后代,您只需像往常一样声明一个类,并在指定新类的祖先时,给出完全限定的类型名称。

type
  TMasonEnumerator = class(TObjectList.TEnumerator)
  protected
    function DoMoveNext: Boolean; override;
  end;
于 2008-12-14T20:19:17.527 回答
0

关于枚举器的优秀主题。

于 2008-12-14T21:01:35.803 回答