【发布时间】:2012-03-30 09:11:34
【问题描述】:
在 Delphi 2009 中,到目前为止,我在泛型方面没有遇到重大问题(使用 Generics.Collections 列表,没有特殊的泛型功能)。
现在我发现这段代码会导致访问MyList.Contains的行中出现AV。
如果我声明 TMyList = class(TList<TMyEntry>); 错误就会消失
我应该避免TObjectList<T> 还是我的代码中的其他内容导致了这个错误?
type
TMyEntry = class(TStringlist);
TMyList = class(TObjectList<TMyEntry>);
procedure TListTests.TestAV;
var
Entry: TMyEntry;
MyList: TMyList;
begin
MyList := TMyList.Create;
try
Entry := TMyEntry.Create;
MyList.Add(Entry);
Assert(MyList.Contains(Entry)); // <--- AV
finally
MyList.Free;
end;
end;
【问题讨论】:
-
@VilleKrumlinde 我不会只说相关,我会说这完全一样。
TObjectList<>派生自TList<>,因此TList<>中的错误也会出现在TObjectList<>中。
标签: delphi generics delphi-2009