Max*_*ith 0 delphi generics tlist
我经常使用从TList扩展:TList<SomeClass1>,TList<SomeClass2>等等.
几乎每次都需要清空它们,删除它们存储的所有对象.
我是通过为每个特定的TList编写特定的过程来完成的.例如:
while Dirs.Count > 0 do
begin
Dirs.Items[0].Free;
Dirs.Delete(0);
end;
Run Code Online (Sandbox Code Playgroud)
有没有办法编写通用程序?像这样的东西:
procedure EmptyAList(_List : TClass; _Object : TClass);
begin
_Object(_List.Items[0]).Free;
_List.Delete(0);
end;
Run Code Online (Sandbox Code Playgroud)
或任何类似的东西.
用TObjectList<T>而不是TList<T>.TObjectList<T>是一个TList<T>默认拥有和销毁存储对象的后代.
您所要做的就是确保其OwnsObjects属性为true(默认情况下),然后您可以调用其Clear()方法自动释放所有包含的对象.例如:
Dirs: TObjectList<SomeClass>;
...
Dirs.Add(SomeObject);
...
Dirs.Clear;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |