在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;
最佳答案
这是基于linked answer的修复程序:
更改
MyList := TMyList.Create;
至
MyList := TMyList.Create(TComparer<TMyEntry>.Default);
关于delphi - TObjectList <T>。包含在Delphi 2009中导致访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9940082/