當要把方法傳送給其他方法時,需要使用委託
委託和事件
委託和事件這兩個概念是完全配合的。委託僅僅是函式指標,那就是說,它能夠引用函式,通過傳遞位址的機制完成。委託是乙個類,當你對它例項化時,要提供乙個引用函式,將其作為它建構函式的引數
event出場了,它封裝了委託型別的變數,使得:在類的內部,不管你宣告它是public還是protected,它總是private的。在類的外部,註冊「+=」和登出「-=」的訪問限定符與你在宣告事件時使用的訪問符相同
事件其實沒什麼不好理解的,宣告乙個事件不過類似於宣告乙個進行了封裝的委託型別的變數而已
事件 :
定義:是類在發生其關注的事情時用來提供通知的一種方式
步驟:1.基於委託定義事件(在當前類中/子窗體)
2.訂閱事件(其他類/主窗體)
3觸發事件(還是在當前類中/子窗體)
事件的宣告
1.宣告乙個委託
public delegate void eventhandler(object sender, system.eventargs e);
2.宣告乙個事件
public event eventhandler changed;
3.引發乙個事件
public onchanged(enventargs e)
}4.定義事件處理程式
public mytext_onchanged(object sender,eventargs e)
5.訂閱事件(將事件處理程式新增到事件的呼叫列表中)
mytext.changed
+= eventhandler(mytext_onchanged);
參考1.0委託型別本質上就是乙個類型別,委託型別可以定義委託物件(或委託變數),委託物件可以代表乙個方法,委託物件所代表的方法是在建立委託物件時由委託的構造方法傳入的,這個方法,可以是物件的例項方法也可以是類的靜態方法.
1.1委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數進行傳遞,當你對它例項化時,要提供乙個引用函式,將其作為它建構函式的引數。
2.委託的定義有個技巧,那就是你先定義要委託的方法,然後把這個方法的宣告部分拷貝過來加乙個delegate關鍵字就是要定義的委託.(因為委託在定義中,如果去掉delegate關鍵字剩下的也就是定義乙個方法的語法)
3.多播委託-引發連鎖反應
注:多播委託的委託方法最好是沒有返回值的方法,也是就是void方法,如果委託了帶有返回值的方法也無法獲得級聯的結果.(例項: delegateevent-delegateone)
事件機制執行原理
事件發布者定義事件,並為事件訂閱接收者,然後發布者發布事件,事件的接收者接收事件,並呼叫自己的方法處理事件,這就是事件機制執行原理
注:1.事件的定義,需要乙個委託型別,這個委託型別用來將來要處理事件的方法型別 2.接收事件,必須在事件的接收者類裡提供和事件定義時,委託型別相同的方法 3.訂閱接收者,事件的訂閱通過」+=」操作符,事件的訂閱和多播委託的操作一樣,可以給事件新增乙個或多個方法委託.
實際上,程式中的事件處理只有三步,第一步是定義事件,第二步訂閱事件,第三步就是激發事件
public delegate void businesschangeddelgegate(recordstate businessrecordstate);
public event businesschangeddelgegate businesschange;
mainbusinessform.businesschange
+= new businesschangeddelgegate(mainbusinessform_businesschange);
usingsystem;
using
system.collections.generic;
using
system.text;
namespace
delegateevent
public
void
close()
public
void selectchannel(int
n)
}//////
電視類
/// public
class television //
事件響應者
public
void
closetelv()
public
void changechannel(int
n)
}class program//
用於觸發事件
//static void remote_delegateenternumevent(int n)
//
//static void remote_delegateopenevent()
//
//static void remote_delegatecloseevent()
//}}
** 請備註出處
c 委託事件
1,什麼是委託 委託是什麼?從生活理解就像是你是乙個c 程式設計師,你對c 並不了解,當需要進行c 分析的時候你委託給你的一位懂c 的同事幫你來完成 在c 中,委託的作用是這樣描述的 委託就像乙個函式的指標,在程式執行時可以使用它們來呼叫不同的函式。簡單點說,委託能夠引用函式,通過傳遞位址的機制完成...
初識委託 事件
這個是我剛入行第乙個感興趣的知識點,翻了翻不知道什麼時候記的筆記,覺得有必要把自己學的知識在梳理一遍,有一些點比當時更清晰 在這裡,先將一位大牛的部落格貼出來,有興趣的可以去看看,很詳細的介紹了委託與事件,讀了幾遍受益匪淺 c 中的委託和事件 c 中的委託和事件 續 本文例項是在vs2013下實現的...
C 委託事件
一 委託 委託類似於函式指標,但函式指標只能引用靜態方法,而委託既能引用靜態方法,也能引用例項方法。委託使用分三步 1 委託宣告。2 委託例項化。3 委託呼叫。例程一 程式 using system namespace 委託 private int add int num1,int num2 例中,...