27 delphi generics generic-list
是否释放泛型列表一样TList<string>,TList<Double>,TList<Integer>或者TList<TMyRecord>,其中,TMyRecord声明如下:
type
TMyRecord = record
MyString: string;
MyDouble: Double;
MyInteger: Integer;
end;
Run Code Online (Sandbox Code Playgroud)
需要任何额外的工作还是MyList.Free足够的?
Dav*_*nan 29
执行摘要
MyList.Free 足够了.
详细的答案
在TList<T>一般的容器拥有它的内容.当您释放容器时,内容也会被丢弃.
现在,如果T是非托管引用,无论是指针还是类,则列表拥有引用.它不具有引用所指的内容.因此,如果你有TList<TObject>,添加一些对象,然后释放列表,引用将被处理,但对象仍然存在.所以,要解决这个问题TObjectList<T>.该容器可以配置为拥有对象和引用,因此在适当的时候处理对象.
现在,在您的方案中,每个列表都包含值类型或托管类型.该列表拥有这些对象,并在销毁时将其处置掉.因此,对于您的所有列表,MyList.Free只需要一切.