拥有以下泛型类:
TTuple<T1, T2> = class
protected
fItem1: T1;
fItem2: T2;
public
constructor Create; overload;
constructor Create(Item1: T1; Item2: T2); overload;
destructor Destroy; override;
property Item1: T1 read fItem1 write fItem1;
property Item2: T2 read fItem2 write fItem2;
end;
constructor TTuple<T1, T2>.Create;
begin
inherited;
end;
constructor TTuple<T1, T2>.Create(Item1: T1; Item2: T2);
begin
fItem1 := Item1;
fItem2 := Item2;
end;
destructor TTuple<T1, T2>.Destroy;
begin
inherited;
end;
并且以以下方式使用:
x := TTuple<TObjectList<TMyObjects>, Integer>.Create;
我需要手动释放fitem1。如何在析构函数中释放fItem1?
System.Generics.Collections
的源代码来学习 Delphi 中使用泛型的许多技巧。TObjectList<T>
和TObjectDictionary<TKey, TValue>
将向您展示 RTL 如何使用 @AndreiGalatyn 在 此回答 中概述的技术。 - JRL