释放通用列表,如,TList<string>
或, where声明如下:TList<Double>
TList<Integer>
TList<TMyRecord>
TMyRecord
type
TMyRecord = record
MyString: string;
MyDouble: Double;
MyInteger: Integer;
end;
需要任何额外的工作还是MyList.Free
足够了?
释放通用列表,如,TList<string>
或, where声明如下:TList<Double>
TList<Integer>
TList<TMyRecord>
TMyRecord
type
TMyRecord = record
MyString: string;
MyDouble: Double;
MyInteger: Integer;
end;
需要任何额外的工作还是MyList.Free
足够了?
执行摘要
MyList.Free
足够了。
详细解答
TList<T>
通用容器拥有其内容。当您释放容器时,内容也会被处理掉。
现在,如果T
是非托管引用(指针或类),则列表拥有该引用。它不拥有引用所指的内容。因此,如果您有TList<TObject>
,添加一些对象,然后释放列表,引用将被释放,但对象仍然存在。所以,要解决这个问题,有TObjectList<T>
. 该容器可以配置为拥有对象以及引用,因此在适当的时候处置对象。
现在,在您的方案中,您的每个列表都包含值类型或托管类型。该列表拥有这些对象并在销毁时处理它们。因此,对于您的所有列表,MyList.Free
仅此而已。