深入理解C#委托delegate的使用_第1頁
深入理解C#委托delegate的使用_第2頁
深入理解C#委托delegate的使用_第3頁
深入理解C#委托delegate的使用_第4頁
深入理解C#委托delegate的使用_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第深入理解C#委托delegate的使用目錄1.什么是委托2:委托的實現(xiàn)命名法委托靜態(tài)方法的實例化委托實例化方法的委托多播委托匿名委托什么時候適用委托

1.什么是委托

委托就是委托某個方法來實現(xiàn)具體的功能,類似于:甲方委托乙方去實現(xiàn)需求;出租房屋人委托中介為其出租房屋。

委托是一種引用類型,從數(shù)據(jù)結(jié)構(gòu)上來講:委托和類一樣,都是一直用戶自定義類型。

2:委托的實現(xiàn)

委托是對方法的抽象和封裝。委托對象實質(zhì)上代表了方法的引用(即內(nèi)存地址)他存儲的就是一系列具有相同簽名和返回類型的方法的地址

可以理解為函數(shù)的一個包裝,它使得c#中的函數(shù)可以作為參數(shù)來被傳遞

使用時遵循三步走原則:定義委托、實例化委托,調(diào)用委托

調(diào)用委托時,委托包含的方法將被執(zhí)行

委托有三種方法:命名方法委托、多播委托、匿名委托

命名法委托

1:定義委托

修飾符delegate返回值類型委托名{參數(shù)列表}

publicdelegatevoidFirstDelegate();

靜態(tài)方法的實例化委托

2:實例化委托

委托名委托對象名=new委托名{方法名}

FirstDelegatefirstDelegate=newFirstDelegate(Test.First);

委托的方法可以是靜態(tài)方法的名稱,也可以是實例化方法的名稱

方法:

publicclassTest

publicstaticvoidFirst()

Console.WriteLine("第一次實現(xiàn)靜態(tài)方法類的委托");

3:調(diào)用

firstDelegate();

實例化方法的委托

2:實例化委托

委托名委托對象名=new委托名{方法名}

FirstDelegatefirstDelegate=newFirstDelegate(newTest().First);

委托的方法可以是靜態(tài)方法的名稱,也可以是實例化方法的名稱

方法:

publicclassTest

publicvoidFirst()

Console.WriteLine("第一次實現(xiàn)實例化方法類的委托");

3:調(diào)用

firstDelegate();

多播委托

多播委托就是一個委托中注冊多個方法,在注冊方法時可以在委托中通過加號或則減號來實現(xiàn)添加或者撤銷的方法。

例如我想買飯吃又想和奶茶還想吃蛋糕,我委托一個人完不成,我需要委托三個人幫我完成,例如美團

1:定義委托

publicclassproblem

publicdelegatevoidBuyDelegate();

staticvoidmian()

{

BuyDelegatebuyDelegate=newBuyDelegate(Buy.BuyFood);

buyDelegate+=Buy.BuyCake;

buyDelegate+=Buy.BuyTea;

buyDelegate();

}

publicclassBuy

publicvoidBuyFood()

{

Conssole.WriyeLine("買個螺獅粉");

}

publicvoidBuyCake()

{

Conssole.WriyeLine("買個蛋糕");

}

publicvoidBuyTea()

{

Conssole.WriyeLine("買杯奶茶");

}

}

匿名委托

匿名委托就是使用匿名的方法注冊在委托上,實際上就是委托中通過定義代碼塊來實現(xiàn)委拖的作用

1:定義委托

修飾符delegate返回值類型委托名(參數(shù)列表)

2:實例化委托

委托名委托對象=delegate

{

代碼塊;

};

3:調(diào)用匿名委托

委托對象(參數(shù)列表);

1:實現(xiàn)水果買賣

publicclassprogram

publicdelegatevoidBuyFruit(doubleprice,doublecount)

staticvoidmain(string[]arg)

BuyFuritbuyFruit=delegate

Console.WriteLine("水果總價為"+price*count);

buyFruit(3,5);

}

什么時候適用委托

1:委托相當(dāng)于用方法作為另一方法參數(shù),同時,也可以實現(xiàn)在兩個不能直接調(diào)用的方法中做橋梁,如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論