国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C#中Delegate淺析與思考

2019-11-18 17:13:50
字體:
供稿:網(wǎng)友

1. 什么是托管函數(shù)

托管函數(shù)是一個(gè)對類里面的某個(gè)函數(shù)的一個(gè)引用.它自己并沒有具體的函數(shù)定義,只是指向某個(gè)函數(shù)實(shí)現(xiàn).

2. 與C++, Delphi的橫向比較

在C++和Delphi中與托管函數(shù)對應(yīng)的類型是函數(shù)指針,形式如下:

C++

typedef (int GetNum)(real rNum);

Delphi

function GetNum(rNum:real): integer; external;

這里定義函數(shù)指針,他們所能指向的函數(shù)定義的傳入?yún)?shù)必須是實(shí)型,傳出為整形


3. 托管函數(shù)有什么用

由于托管函數(shù)是對類里面某個(gè)函數(shù)的一個(gè)引用.所以我們不必知道這個(gè)函數(shù)的具體名字是什么,而只需要調(diào)用托管函數(shù),讓托管函數(shù)去調(diào)用相應(yīng)的函數(shù)就可以了. 一個(gè)例子: 一個(gè)公司,一個(gè)領(lǐng)導(dǎo),一個(gè)領(lǐng)導(dǎo)秘書,三個(gè)員工分別管理市場,策劃和生產(chǎn).這里秘書就相當(dāng)與一個(gè)托管函數(shù), 領(lǐng)導(dǎo)要下達(dá)什么命令(獲得市場信息,生產(chǎn)什么產(chǎn)品),只需要對秘書說給我一份市場報(bào)告或者我們不生產(chǎn)原子彈轉(zhuǎn)向生產(chǎn)氫彈.然后再由秘書根據(jù)領(lǐng)導(dǎo)的命令選擇的去找哪個(gè)員工,再把員工獲得的信息返回給領(lǐng)導(dǎo). 這里面三個(gè)員工對于領(lǐng)導(dǎo)是透明的,領(lǐng)導(dǎo)并不知道自己下達(dá)的命令具體是由誰執(zhí)行的.


4. 如何定義&&如何使用

 

接著上面的例子,我們聲明一個(gè)秘書托管函數(shù)原型

class Secretory

{

//定義托管函數(shù)原型

PRivate delegate string Do(string command);

//創(chuàng)建托管函數(shù)實(shí)例

public Do Doit;

//給秘書下達(dá)命令執(zhí)行

public void ExecuteCommand(string command)

{

switch(秘書根據(jù)命令判斷是要給誰執(zhí)行的)

{

case 調(diào)研市場的人:

Doit=new Do(new MarketMan().GetMarketInfo);

Break;

Case 生長產(chǎn)品的人:

Doit=new Do(new ProductMan().ProduceProduct);

Break;

Default:

Break;

}

}

Doit(command);

}

 

///調(diào)研市場的那個(gè)人的類

class MarketMan

{

public string GetMarketInfo(string command)

{ 根據(jù)命令調(diào)查信息, 返回獲得信息 ;}

}

///生產(chǎn)產(chǎn)品的人

class ProductMan

{

public static string ProduceProduct(string command)

{ 根據(jù)命令生產(chǎn)產(chǎn)品,并返回生產(chǎn)工程中的信息;}

}

 

 

ok,那么如何執(zhí)行呢?老板怎么使用Secretory這個(gè)類呢?

go on

老板只需要把秘書叫(new)過來,直接向他下達(dá)命令,然后就可以喝茶去了~ ^_^

class Boss

{

public void static main()

{

(new Secretory()).Doit(“我們要生產(chǎn)氫彈,把以前的原子彈都扔到日本好了”);

}

}

 

5. 其他

正入你們所見的,上面的兩個(gè)類中的方法,一個(gè)是靜態(tài),一個(gè)不是靜態(tài)的. 托管函數(shù)所指的函數(shù)可以靜態(tài)的也可以不是靜態(tài)的.


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武清区| 德兴市| 嘉兴市| 柳林县| 昌黎县| 仙桃市| 平乡县| 互助| 弥勒县| 绥德县| 宁城县| 曲阳县| 固始县| 彩票| 潮安县| 横山县| 昌吉市| 棋牌| 理塘县| 宁晋县| 朝阳县| 泰和县| 五台县| 区。| 若尔盖县| 微山县| 石景山区| 湄潭县| 苏尼特左旗| 宜川县| 四平市| 都昌县| 突泉县| 金山区| 吴忠市| 柘城县| 偏关县| 瑞昌市| 南开区| 舒兰市| 昭苏县|