C#中的委托類似于C++中的一種特殊的指針:指向函數(shù)的指針。通過定義指向函數(shù)的指針,在程序中我們就可以靈活的調(diào)用多個函數(shù),當(dāng)然,前提是這些函數(shù)的返回類型和參數(shù)列表的個數(shù)和類型都相同。通過指向函數(shù)的指針,我們還可以將函數(shù)作為另一個函數(shù)的參數(shù)。
首先復(fù)習(xí)一下C++中的指向函數(shù)的指針。
1:定義。格式如下:
返回類型 (*指針變量名)(參數(shù)類型列表)注意:參數(shù)類型列表中只有參數(shù)類型和個數(shù),沒有形參名。
如:
double (*fp)(double, double)
2:函數(shù)指針的賦值。
格式:指針變量名 = 函數(shù)名
注意:函數(shù)名所代表的函數(shù),其返回類型和參數(shù)列表必須和函數(shù)指針的定義中的參數(shù)相同。
假如有以下的兩個函數(shù):
double multiple(double p1, double p2) { return p1 * p2; } double divide(double p1, double p2) { return p1 / p2; }
在程序中就可以將這兩個函數(shù)賦給指針fp并且使用了。
如:
fp = multiply; fp(1.0, 2.0); //等同于調(diào)用函數(shù)multiply(1.0, 2.0); fp = divide; fp(4, 2); //等同于調(diào)用函數(shù)divide(4, 2);
3:利用函數(shù)指針將函數(shù)作為另一函數(shù)的參數(shù)。
因?yàn)橹赶蚝瘮?shù)的指針就是一個指針變量,所有可以將其作為函數(shù)的參數(shù)。
如:
void doSomething(double (*fp)(double, double), double p1, double p2) { cout << fp(p1, p2) << endl; }
C#中的委托也是如此。
首先要定義委托類型的變量;
然后要對變量進(jìn)行賦值;
最后是調(diào)用。
1:委托類型的定義:使用關(guān)鍵字delegate。
格式:delegate 返回類型 委托類型名(形參列表)
注意:與C++中的函數(shù)指針不同,在定義委托類型的形參列表中,除了要給出類型,還有給出形參名。類似于在定義函數(shù)原型時,加了個delegate關(guān)鍵字。
如:
delegate double MyDelegate(double p1, double p2);
注意:此處的MyDelegate并不是一個變量,而是類似于類的一個類型,在使用該委托時還有定義該類型的變量。
2:定義委托類型的變量。
格式:委托類型名 變量名;
3:委托變量的賦值和調(diào)用
假如程序中有以下兩個函數(shù):
double Multiply(double p1, double p2) { return p1 * p2; } double Divide(double p1, double p2) { return p1 / p2; }
有兩種方法可以給委托變量賦值
MyDelegate myDelegate; //定義委托類型的變量 myDelegate = new MyDelegate(Multiply); //賦值方法1 Console.WriteLine(myDelegate(2.0, 3.0)); //委托變量的使用 myDelegate = Divide; //賦值方法2 Console.WriteLine(myDelegate(4, 2));
4:將委托用于函數(shù)參數(shù)。和C++的函數(shù)指針略有不同。
例:
void Test(MyDelegate myDelegate) { myDelegate(3, 4); }
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。
名稱欄目:C#中的委托-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://chinadenli.net/article22/ddiijc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站收錄、云服務(wù)器、品牌網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容