學(xué)習(xí)記錄:委托和事件

今天是學(xué)習(xí)C#第17天。。。


委托:

一個(gè)事物想執(zhí)行一個(gè)方法但卻不知如何實(shí)現(xiàn),而另一個(gè)知道怎么去實(shí)現(xiàn),
可以將其委托給知道方法的那個(gè)人。

委托就是用來(lái)儲(chǔ)存方法的結(jié)構(gòu)


委托類(lèi)型:

  • 委托的別名:代理、句柄
  • 委托是自定義類(lèi)型
  • 委托是引用類(lèi)型
返回值                參數(shù)
House xxxxxx (float money,float area)
delegate House BuyHouseEventHandle(float money, float area);
即:
delegate  返回值類(lèi)型  委托類(lèi)型名(參數(shù)列表);

委托對(duì)象:

[訪問(wèn)修飾符] 委托類(lèi)型名稱(chēng)      委托對(duì)象的名稱(chēng);
public BuyHouseEventHandle buyHouseEventHandle; l 

給委托對(duì)象賦值:

委托對(duì)象 = 方法名;
xiaoming.buyHoueEventHandle = intermediary.BuyHouse;
注意只寫(xiě)方法名,沒(méi)有括號(hào)
Tips:委托對(duì)象,保存的是方法的內(nèi)存地址

委托對(duì)象的綁定與解綁定:

xiaoming.buyHoueEventHandle += lianjia.BuyHouse;
xiaoming.buyHoueEventHandle -= lianjia.BuyHouse; 

委托對(duì)象的執(zhí)行:

委托對(duì)象(參數(shù)列表);
House house = xiaoming.buyHoueEventHandle(1000000,80);

Tips:委托對(duì)象為空是不能執(zhí)行的,執(zhí)行前先提前判斷

匿名函數(shù):

  • 匿名函數(shù)就是沒(méi)有函數(shù)名的函數(shù)
  • 匿名函數(shù)僅限委托綁定
委托對(duì)象 += delegate ([參數(shù)列表])
{
//方法體
}
xiaoming.buyHoueEventHandle += delegate(float m,float a) 
{
Console.WriteLine("匿名中介在幫忙找房子喲");
return null;
};

回調(diào)函數(shù):

public void Marry(BuyHouseEventHandle buyHouse) {
if(buyHouse == null) {
Console.WriteLine(“No!!!!”);
}
else
{
buyHouse(1000000,200);
Console.WriteLine(”有房子啦,我好幸福!");
} }
xiaomei.Marry(intermediary.BuyHouse);

事件:

特殊的委托對(duì)象:

[訪問(wèn)修飾符] event 委托類(lèi)型 事件名稱(chēng)
public event BuyHouseEventHandle buyHouseEvent; 
  • 在非事件所在的類(lèi)中,只能對(duì)事件進(jìn)行綁定(+=)和解綁定(-=)
  • 在事件所在的類(lèi)中,可以對(duì)事件進(jìn)行賦值(=)、調(diào)用、綁定(+=)和解綁定(-=)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容