引言:
上一個(gè)專題已經(jīng)和大家分享了我理解的——C#中為什么需要委托,專題中簡單介紹了下委托是什么以及委托簡單的應(yīng)用的,在這個(gè)專題中將對(duì)委托做進(jìn)一步的介紹的,本專題主要對(duì)委本質(zhì)和委托鏈進(jìn)行討論。
一、委托的本質(zhì)
平時(shí)我們很容易使用委托——用C#delegate關(guān)鍵字定義委托,再用new操作符構(gòu)造委托實(shí)例,然后通過調(diào)用委托實(shí)例來調(diào)用回調(diào)方法(就是用一個(gè)了委托對(duì)象的變量來代替方法名,這句話如果剛接觸的人不好理解的話,這里給個(gè)例子:MyDelegate mydelegate =new Mydelegate(obj.mymethod),MyDelegate是定義的一個(gè)委托,假設(shè)定義的是沒有參數(shù)的,然后調(diào)用委托實(shí)例是這樣的——mydelegate(), 大家可以發(fā)現(xiàn)此時(shí)調(diào)用委托和調(diào)用方法的方式是一模一樣的,如果沒有看前面mydelegate是個(gè)委托類型,大家都會(huì)認(rèn)為這是直接調(diào)用一個(gè)方法,而不是調(diào)用委托實(shí)例,通過這個(gè)例子大家應(yīng)該很容易明白了這句話了吧——用一個(gè)委托對(duì)象的變量來代替方法名),相信通過括號(hào)內(nèi)的講解后,相信大家又會(huì)對(duì)委托有進(jìn)一步的理解的——委托就是方法的代替品,委托變量此時(shí)著方法名,大家可以簡單理解委托是方法的一個(gè) “外號(hào)”。
前面的都介紹了委托的一些使用和理解的,現(xiàn)在就讓我我們來進(jìn)一步看看編譯器和CLR在背后對(duì)我們用delegate關(guān)鍵字定義的委托類型做了些什么事情的,前一個(gè)專題中我和大家說過委托是一個(gè)類,這么是有根據(jù)的,因?yàn)槲覀冊(cè)贗DE中定義一個(gè)委托類型時(shí),最終是通過編譯器將定義的代碼轉(zhuǎn)化為中間語言IL,然后再執(zhí)行中間語言中的代碼來轉(zhuǎn)化為本機(jī)代碼的,所以在Visual Studio中編寫的代碼只是一個(gè)包裝而已,真真程序執(zhí)行的是中間語言中的代碼的。現(xiàn)在就看看編譯器把我們定義的委托類型轉(zhuǎn)化為什么樣的中間語言代碼的。
當(dāng)我們?cè)陬愔邢裣旅孢@樣定義一個(gè)委托時(shí):
public delegate void DelegateTest(int parm);
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。
網(wǎng)頁標(biāo)題:[C#基礎(chǔ)知識(shí)梳理系列]專題二:委托的本質(zhì)論-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://jinyejixie.com/article8/digeop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站制作、全網(wǎng)營銷推廣、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容