처럼 선언 TMyRecord
TList<string>
, TList<Double>
, TList<Integer>
또는 TList<TMyRecord>
, 같은 일반적인 목록을 확보합니까?일반 TList <T>을 해제하는 방법은 무엇입니까?</p> <pre><code>type TMyRecord = record MyString: string; MyDouble: Double; MyInteger: Integer; end; </code></pre> <p>어떤 추가 작업이 필요하거나 <code>MyList.Free</code> 충분 :
24
A
답변
27
내용 요약
MyList.Free
충분하다.
TList<T>
일반 컨테이너의 내용을 소유
자세한 대답. 당신이 콘테이너를 풀 때, 내용은 또한 처분된다.
T
이 관리되지 않는 참조 인 경우 포인터 또는 클래스 중 하나 인 경우 목록에 참조가 있습니다. 참조가 언급 한 것을 소유하지 않습니다. 따라서 TList<TObject>
인 경우 일부 개체를 추가 한 다음 목록을 비우면 참조가 삭제되지만 개체는 그대로 유지됩니다. 그래서 이것을 처리하기 위해 TObjectList<T>
이 있습니다. 이 컨테이너는 참조뿐만 아니라 객체를 소유하도록 구성 할 수 있으므로 적절한 순간에 객체를 처리 할 수 있습니다.
이제는 각 목록에 값 형식 또는 관리되는 형식이 포함됩니다. 그 목록은 그 물건들을 소유하고 그것들이 파괴 될 때 처분합니다. 따라서 모든 목록에 대해 MyList.Free
만 있으면됩니다.
+1. 매우 정중하게 작성된 질문입니다. –