欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C#委托和事件詳解(7)

盡管這樣達到了我們要的效果,但是似乎并不美氣,光是第一個(gè)方法注冊用“=”,第二個(gè)用“+=”就讓人覺(jué)得別扭。此時(shí),輪到Event出場(chǎng)了,C# 中可以使用事件來(lái)專(zhuān)門(mén)完成這項工作,我們改寫(xiě)GreetingManager類(lèi),它變成了這個(gè)樣子:

以下是引用片段:
   publicclassGreetingManager{
   //這一次我們在這里聲明一個(gè)事件
   publiceventGreetingDelegateMakeGreet;
   publicvoidGreetPeople(stringname,GreetingDelegateMakeGreeting){
   MakeGreeting(name);
   }
   }

很容易注意到:MakeGreet 事件的聲明與之前委托變量delegate1的聲明唯一的區別是多了一個(gè)event關(guān)鍵字??吹竭@里,你差不多明白到:事件其實(shí)沒(méi)什么不好理解的,聲明一個(gè)事件不過(guò)類(lèi)似于聲明一個(gè)委托類(lèi)型的變量而已。

我們想當然地改寫(xiě)Main方法:

以下是引用片段:
   staticvoidMain(string[]args){
   GreetingManagergm=newGreetingManager();
   gm.MakeGreet=EnglishGreeting;//編譯錯誤1
   gm.MakeGreet+=ChineseGreeting;
   gm.GreetPeople("JimmyZhang",gm.MakeGreet);//編譯錯誤2
   }

這次,你會(huì )得到編譯錯誤:事件“Delegate.GreetingManager.MakeGreet”只能出現在 += 或 -= 的左邊(從類(lèi)型“Delegate.GreetingManager”中使用時(shí)除外)。

事件和委托的編譯代碼

這時(shí)候,我們不得不注釋掉編譯錯誤的行,然后重新進(jìn)行編譯,再借助Reflactor來(lái)對 event的聲明語(yǔ)句做一探究,看看為什么會(huì )發(fā)生這樣的錯誤:

public event GreetingDelegate MakeGreet;

可以看到,實(shí)際上盡管我們在GreetingManager里將 MakeGreet 聲明為public,但是,實(shí)際上MakeGreet會(huì )被編譯成 私有字段,難怪會(huì )發(fā)生上面的編譯錯誤了,因為它根本就不允許在GreetingManager類(lèi)的外面以賦值的方式訪(fǎng)問(wèn)。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C# 中的委托和事件 (看了此文,我明白了)
轉載
C#委托和對象詳談
jQuery筆記
C#中的Delegates與Event Handler
委托和事件的綜合總結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久