C#中委托的基本用法總結(jié)
原則:
1、委托本質(zhì)就是個(gè)指針,一個(gè)函數(shù)指針,拿到函數(shù)的首地址即可;
C#的委托加了安全性,體現(xiàn)在對(duì)于函數(shù)指針?biāo)玫暮瘮?shù)指令塊的類型檢測(cè),比如返回值,參數(shù)類型,參數(shù)個(gè)數(shù)
而C中的函數(shù)指針被賦值的時(shí)候(在C#中,就是委托實(shí)例化的時(shí)候,因?yàn)镃#中后臺(tái)將委托處理成一個(gè)類了,封裝了哈)被賦予的值是否滿足類型的種種條件(返回值,參數(shù)類型,參數(shù)個(gè)數(shù))不做檢查,由用戶給出保證,C#會(huì)編譯提示出來(lái)
2、委托實(shí)例化的過(guò)程,也就是委托對(duì)象構(gòu)造的過(guò)程,從底層來(lái)講,即將一個(gè)現(xiàn)存的函數(shù)代碼指令塊的內(nèi)存地址(靜態(tài)函數(shù),實(shí)例的非靜態(tài)成員函數(shù)都行)賦值給這個(gè)委托;這個(gè)賦值過(guò)程,就是委托的構(gòu)造函數(shù)要做的事情,所以,委托的構(gòu)造函數(shù)一定有一個(gè)參數(shù),這個(gè)參數(shù)在后臺(tái)讓系統(tǒng)處理,就是滿足類型檢查的函數(shù)指針,所要檢查的類型(返回值,參數(shù)類型,參數(shù)個(gè)數(shù))都是在聲明定義委托的時(shí)候給出的。
3、委托實(shí)例化的兩種方法:
1) A a = new A(靜態(tài)方法名/實(shí)例.方法名);
2) A a = 靜態(tài)方法名/實(shí)例.方法名;
委托調(diào)用的兩種方法:
1)a.Invoke()
2)a()
用來(lái)構(gòu)造委托的方法可以是靜態(tài)方法,也可以是實(shí)例化對(duì)象的成員函數(shù),本質(zhì)是這段代碼指令已經(jīng)編譯出來(lái),分配了內(nèi)存了,傳遞給委托的參數(shù)(本質(zhì)就是這塊指令數(shù)據(jù)的首地址)是有效的有意義的,從這個(gè)角度來(lái)理解,自然靜態(tài)方法,實(shí)例方法都能用來(lái)構(gòu)造、建立委托實(shí)例的了
相關(guān)文章
淺析string 與char* char[]之間的轉(zhuǎn)換
與char*不同的是,string不一定以NULL('\0')結(jié)束。string長(zhǎng)度可以根據(jù)length()得到,string可以根據(jù)下標(biāo)訪問(wèn)。所以,不能將string直接賦值給char*2013-10-10
C語(yǔ)言關(guān)于二叉樹(shù)中堆的創(chuàng)建和使用整理
大家好,這里是針對(duì)二叉樹(shù)中堆結(jié)構(gòu)的順序儲(chǔ)存,整理出來(lái)一篇博客供我們一起復(fù)習(xí)和學(xué)習(xí),如果文章中有理解不當(dāng)?shù)牡胤?還希望朋友們?cè)谠u(píng)論區(qū)指出,我們相互學(xué)習(xí),共同進(jìn)步2022-08-08
C語(yǔ)言實(shí)現(xiàn)日志備份守護(hù)進(jìn)程的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何使用C語(yǔ)言開(kāi)發(fā)一個(gè)簡(jiǎn)單的日志備份守護(hù)進(jìn)程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
C++ Custom Control控件向父窗體發(fā)送對(duì)應(yīng)的消息
這篇文章主要介紹了C++ Custom Control控件向父窗體發(fā)送對(duì)應(yīng)的消息的相關(guān)資料,需要的朋友可以參考下2015-06-06
基于C++ bitset常用函數(shù)及運(yùn)算符(詳解)
下面小編就為大家?guī)?lái)一篇基于C++ bitset常用函數(shù)及運(yùn)算符(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)堆排序順序存儲(chǔ)(升序)
這篇文章主要介紹了C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)堆排序順序存儲(chǔ)(升序)的相關(guān)資料,需要的朋友可以參考下2017-05-05

