typetactioncomponent = 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的引數型別,其...