泛型在C++, C#中已有廣泛應用,Delphi自2009版本也引入泛型,典型的應用如TList,TDictionary。如果你熟悉C#,其用法十分類似。
比如以前Delphi沒有integer list,用泛型,我們可以這樣聲明:
var list: TList; begin list := TList .Create; list.Add(1); list.Add(2); list.Add(3); list.Items[2] := 8; list.Free; end;
TDictionary類是一個name,value容器,內部是哈希索引,所以對於數據查找非常高效,如下面的代碼:
var Dict: TDictionary; begin Dict := TDictionary .Create; Dict.Add('key1', 'value1'); Dict.Add('key2', 'value2'); if not Dict.ContainsKey('key3') then Dict.Add('key3','value3'); Dict.Free; end;
因為Object Pascal沒有垃圾收集,所以對應的每種泛型類都有一個對應引用類型實現,比如TObjectList,TObjectDictionary,這些類實現中, 當刪除元素時會自動幫你釋放對象。
上面的TList和TDictionary在Generics.Collections單元,有興趣可以研究一下代碼。除了已有的泛型類之外,你可以編寫自己的泛型類,感興趣的朋友可以google相關文章。