泛型與無聊

2022-08-26 01:18:08 字數 1497 閱讀 5471

type

tactioncomponent = class

(tobject)

public

procedure execute;virtual;

end;

tstuckpig = class

(tactioncomponent)

public

procedure execute;override;

end;

trole = class

(tobject)

public

name:string[

255];

actionlist:tlist;

end;

tworld = class

(tobject)

publicobjectlist:tdictionary

;end

; tform2 = class

(tform)

button1: tbutton;

procedure

button1click(sender: tobject);

private

public

end;

varform2: tform2;

implementation

procedure

tform2.button1click(sender: tobject);

varworld:tworld;

roles:tlist

; role:trole;

actioncomponent:tactioncomponent;

begin

world:=tworld.create;

//角色:屠夫

role:=trole.create;

role.name:='屠夫'

; //殺豬動作或者叫技能可能更準確

actioncomponent:=tstuckpig.create;

role.actionlist.add(actioncomponent);

roles:=tlist.create;

roles.add(role);

//角色:將軍

role:=trole.create;

role.name:='

驃騎大將軍';

roles.add(role);

//角色:書法家

role:=trole.create;

role.name:='

書法家'

; roles.add(role);

//角色:酒鬼

role:=trole.create;

role.name:='酒鬼'

; roles.add(role);

//賦與張飛各角色

world.objectlist.add('張飛'

,roles);

end;

集合和泛型11 泛型委託與泛型事件

委託也可以泛型化,也就是委託也定義自己的型別引數,這樣的委託稱為泛型委託。在使用委託的 中可以給委託指定型別引數的具體型別,而讓泛型委託例項化為具體的委託例項。就像例項化泛型類或呼叫泛型方法一樣。定義乙個泛型委託的語法格式 public private protected delegate 返回型別...

泛型List與非泛型ArrayList

arraylist集合的用處越來越窄了,list static void main string args arraylist的不安全性一目了然,型別不安全,必將導致各種攻擊的產生,static void main string args 相比不安全的arraylist來說,list 的型別安全性使...

泛型 泛型類 泛型方法 泛型擦除

1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...