委托枚举有更好的方法吗?

时间:2013-02-02 13:41:52

标签: delphi delphi-2010 enumeration

我有以下代码将枚举移交给私有字段:

interface

type    

TMyClassEnumerator = class(TEnumerator<TMyClass>)
end;

TMyContainerClass = class(TObject)
private
  FItems: TObjectDictionary<string, TMyClass>;
public
  function GetEnumerator: TMyClassEnumerator;
end;

implementation

function TMyContainerClass.GetEnumerator: TMyClassEnumerator;
begin
  Result := TMyClassEnumerator(FItems.Values.GetEnumerator);
end;

我这样做了吗?我参与实现IENumerable<TMyClass>或创建我自己的界面,然而,我没有编译它...上面的代码确实适用于for..in,但我觉得我应该使它成为一个合适的通过实现这样的接口可以枚举。

1 个答案:

答案 0 :(得分:3)

你的方法很合理,但我没有看到你需要演员,或者确实宣布了一个枚举类。我会这样做:

TMyContainerClass = class
private
  FItems: TObjectDictionary<string, TMyClass>;
public
  function GetEnumerator: TEnumerator<TMyClass>;
end;

function TMyContainerClass.GetEnumerator: TEnumerator<TMyClass>;
begin
  Result := FItems.Values.GetEnumerator;
end;