泛型類定義 小小練習

2021-09-07 09:52:36 字數 1867 閱讀 5685

不需要引用其他單元檔案,

如果用泛型列表tlist或 字典tdictionary時需要引用:system.generics.collections

unit

unit1;

inte***ce

uses

system.classes;

type

a = class

//一般類

end;

b = class

(a) //一般繼承

end; gb

= class(a) //

繼承於a的泛型類

end;

gc =class(gb)//

繼承於gb並指定t為 string的類 //值型別

end;

gd =class(gb)//

繼承於gb並指定t為 tstringlist的類 //引用型別

end;

ge=class(gb) //

繼承於gb並指定t為 a的類 ;是自己的祖先類也可以嗎?

end;

//-------------

ghconstructor> =class

//乙個直接的泛型類 t限定為a類 或a的子類

end;

j =class(gh)

end; k =class(gh)

end;//

l =class(gh) //會出錯,因為 gh的型別限定 a或a的子類

泛型方法不一定寫在泛型類裡面

//方法體裡面用到t,這裡有疑問 ?? 這個t應該從**傳進去??

end;

end.

unit system.sysutils; //

單元中有定義下面的泛型方法 型別

//generic anonymous method declarations

type

tproc = reference to

procedure

; tproc

= reference to

procedure

(arg1: t);

tproc

= reference to

procedure

(arg1: t1; arg2: t2);

//----------以下應用 :用到兩個 佔位符,

class

procedure runonuithread(proc: tproc; arg1: t1;

arg2: t2);

overload

;

class

procedure ttask.runonuithread(proc: tproc; arg1: t1;

arg2: t2);

begin

synchronize(tthread.currentthread,

procedure

()

begin

proc(arg1, arg2);

end);

end;

上面用到兩個 佔位符,通過 runonuithread()引數傳進去,並且前面要標明用到的 佔位符,

這個方法有點特殊,傳了乙個方法 proc: tproc進去

泛型 泛型類的定義

泛型的定義與普通類定義相比,首先在類名後增加了由尖括號標識的型別變數,一般用t表示。t可以在泛型中的任何地方使用。對於泛化介面也是這樣定義。我們來看看普通類box以及box的泛型的 1 普通類box的定義 public class mybox public object get 2 box類的泛型定...

定義泛型類

前言 要建立泛型類,只需在類定義中包含尖括號語法。其中t可以是任意識別符號,只要遵循通常的c 命名規則即可,例如不以數字開頭等。泛型類可以在其定義中包含任意多個型別,它們用逗號分隔開。定義了這些型別之後,就可以在類定義中像使用其他型別那樣使用它們。可以把它們用作成員變數的型別 屬性或方法等成員的返回...

泛型類介面定義

在使用泛型定義類的過程中遇到了不少問題,特記錄如下 定義最基本的泛型類如下 其實最簡單的只需要新增,就表示泛型類了,可在使用的過程中 pl.datalist new list 總是提示錯誤,編譯不通過,說是必須是類才可以,於是修改如下 public abstract class getdatabas...