窗體文件:object Form1: TForm1 Left = 288 Top = 242 Caption = Form1 ClIEntHeight = 1
窗體文件:object Form1: TForm1 Left = 23 Top = 87 Caption = Form1 ClIEntHeight = 122
二、體驗TList<T>在此,我將使用以前版本的指針集合類TList與TList<T>作對比,保存一組整形數據。使用控制台的方式進行程
三、體驗TObjectList<T>剛開始看到TObjectList的時候我有點不解,既然是泛型,那麼T就不區分值類型和引用類型,為什麼還會多出來
控制台程序代碼:1program TestTObjectList;23{$APPTYPE CONSOLE}45uses6 SysUtils,7 Contn
如果我們將代碼中的第1*處修改成:oldObjList := TObjectList.Create(False);將產生如下結果:圖4相對於TObjectLi
七、體驗泛型方法1、Delphi2009不支持全局泛型方法,泛型方法只能置於類內或者嵌套在方法內,或者成為類的靜態方法。2、以下代碼將打印出傳入泛型變量的地址
九、體驗泛型約束條件以下通過代碼針對泛型類,對Delphi2009所支持的泛型約束條件進行驗證。1、類類型約束條件約束模板類型T只能為類類型1program
3、構造函數約束條件大家都知道,在C#中,可以使用 T: where new() 對泛型模板類型進行構造函數的約束,指明 類型T 必須有一個可見的構造函數。在
6、多模板類型分別約束條件有兩個模板類型T1、T2,要使用不同的約束分別約束兩個模板類型,可以使用以下方法:1type2 TGenericsClass<
OOP Pascal也有棧對象,棧對象的定義和創建:type TStackObject = object // 注意此處的聲明,object為保留字表明為
三、Delphi中的interface從智能指針的簡介中我們可以了解到,要使用智能指針,我們必須得捕獲到棧對象的構造函數,將堆對象的指針傳入棧對象,由棧對象保
有結果可以看到,代碼中沒有釋放testInter指向的對象,對象由後台釋放了。如果將1*處改為testInter: TTestInterface;則結果如下,
然後我們寫一個控制台程序做試驗:program TestClassicalAutoPtr;{$APPTYPE CONSOLE}uses SysUtils,
// 注意:此處如果不加as IAutoPtr<T>,程序運行時會報錯,第一次我沒有加as IAutoPtr<T>程序運行一切正常,到
測試結果為:然而我們將3*處代碼改成ap.Release.DoPrintInt,則輸出結果為因為Release方法已經通知智能指針不管理堆對象了。同時,我們還
六、智能指針與集合如果我們聲明一個全局變量:var gAp: IAutoPtr<TTestClass>;並從DoTestAutoPtr方法開始