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

首頁 > 開發 > 綜合 > 正文

C#中Delegate淺析與思考

2024-07-21 02:29:06
字體:
來源:轉載
供稿:網友

1. 什么是托管函數

托管函數是一個對類里面的某個函數的一個引用.它自己并沒有具體的函數定義,只是指向某個函數實現.

2. 與c++, delphi的橫向比較

在c++和delphi中與托管函數對應的類型是函數指針,形式如下:

c++

typedef (int getnum)(real rnum);

delphi

function getnum(rnum:real): integer; external;

這里定義函數指針,他們所能指向的函數定義的傳入參數必須是實型,傳出為整形

3. 托管函數有什么用

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

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

接著上面的例子,我們聲明一個秘書托管函數原型

class secretory

{

//定義托管函數原型

private delegate string do(string command);

//創建托管函數實例

public do doit;

//給秘書下達命令執行

public void executecommand(string command)

{

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

{

case 調研市場的人:

doit=new do(new marketman().getmarketinfo);

break;

case 生長產品的人:

doit=new do(new productman().produceproduct);

break;

default:

break;

}

}

doit(command);

}

///調研市場的那個人的類

class marketman

{

public string getmarketinfo(string command)

{ 根據命令調查信息, 返回獲得信息 ;}

}

///生產產品的人

class productman

{

public static string produceproduct(string command)

{ 根據命令生產產品,并返回生產工程中的信息;}

}

ok,那么如何執行呢?老板怎么使用secretory這個類呢?

go on

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

class boss

{

public void static main()

{

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

}

}

5. 其他

正入你們所見的,上面的兩個類中的方法,一個是靜態,一個不是靜態的. 托管函數所指的函數可以靜態的也可以不是靜態的.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 波密县| 揭阳市| 黎城县| 墨江| 华宁县| 德化县| 金寨县| 海原县| 松原市| 巴塘县| 米泉市| 吉木乃县| 开江县| 乐业县| 东兴市| 定西市| 蒲城县| 华蓥市| 南康市| 巩义市| 庆安县| 中超| 合阳县| 泸水县| 集安市| 清远市| 河西区| 漯河市| 宜兰县| 玉树县| 吉水县| 龙井市| 青田县| 杭州市| 璧山县| 于都县| 监利县| 中宁县| 同仁县| 合作市| 青神县|