delphi - tool - ¿Cómo liberar un TList genérico<T>?
unlock (1)
Resumen ejecutivo
MyList.Free
es suficiente.
Respuesta detallada
El contenedor genérico TList<T>
posee sus contenidos. Cuando liberas el contenedor, los contenidos también se eliminan.
Ahora, si T
es una referencia no administrada, ya sea un puntero o una clase, entonces la lista posee la referencia. No posee aquello a lo que se refiere la referencia. Entonces, si tiene TList<TObject>
, agregue algunos objetos y luego libere la lista, las referencias se descartan, pero los objetos permanecen. Entonces, para resolver esto, hay TObjectList<T>
. Ese contenedor se puede configurar para que posea tanto los objetos como las referencias y, por lo tanto, elimine los objetos en el momento apropiado.
Ahora, en su escenario, cada una de sus listas contiene un tipo de valor o un tipo administrado. La lista posee esos objetos y los descarta cuando se destruye. Entonces, para todas sus listas, MyList.Free
es todo lo que se necesita.
TList<string>
listas genéricas como TList<string>
, TList<Double>
, TList<Integer>
o TList<TMyRecord>
, donde TMyRecord
se declara como:
type
TMyRecord = record
MyString: string;
MyDouble: Double;
MyInteger: Integer;
end;
requiere algún trabajo adicional o ¿ MyList.Free
es suficiente?