在Delphi 2009中,到目前为止我没有遇到Generics的主要问题(使用Generics.Collections列表,没有特殊的Generics功能)。
现在我发现这段代码会在访问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;
答案 0 :(得分:5)
这是基于linked answer:
的修复程序变化
MyList := TMyList.Create;
到
MyList := TMyList.Create(TComparer<TMyEntry>.Default);