事件與委託

2021-08-25 21:12:16 字數 838 閱讀 2191

1.所處層次

delegate,event,還有屬性關鍵字都是語言層次的,對於clr來說,只有方法和成員變數。因為這些概念對於.netframework來說太常用了,所以c#提供了關鍵字,讓編譯器自動生成對應的類和方法以及成員變數,並且還會在程式集的元資料中生成乙個事件定義記錄項,編譯器和其他工具可利用這些元資料資訊,但是clr本身並使用這些元資料資訊。 因為出於語言層次,所以不同的語言會提供不同的關鍵字。

2.委託是對函式的封裝

委託可以看作是對函式型別的封裝,表明了一類函式,這些函式具有相同的原型

eg. public delegate int test(double f);

此委託就封裝了int f(double)這種原型的函式。

3.事件是對委託集合的封裝

事件表示同一種委託的多個例項的集合,可以通過+=增加新的委託例項。

eg. public event test test;

此時可以通過如下增加事件處理程式

test += new test(函式名);

4.事件標準寫法

worker.cs

program.cs

事件處理函式的委託型別以eventhdanler結尾;

事件委託無返回值,引數為object,和繼承自eventargs的型別;

提供乙個on***的保護方法,用來激發事件;

通過+=為事件掛接處理程式,可以為乙個事件掛接多個處理程式,實際執行測序為掛接先後的順序。

委託與事件

1.建立乙個類,分別建立加 減 乘 除四個方法,通過委託和事件,實現 輸入兩個計算數,完成所有的四個方法的呼叫,計算出結果顯示。建立乙個警察 policeman 類,乙個小偷 thief 類,例項化兩個類的物件,當policeman類中警笛鳴響 alarm 方法執行時,觸發小偷逃跑 runaway ...

委託與事件

委託就是以方法做引數進行傳遞,它定義的是方法的框架,如果用這個委託,所宣告的方法就必須按照給定的引數及返滬型別進行處理。宣告委託的方式 delegate 返回值型別 委託型別名 引數 比如delegate void stringprocess string s 注意這裡的除了前面的delegate,...

委託與事件

委託與事件 一 委託 delegate 1 委託是一種可以把引用儲存為函式的型別。2 在定義了委託後,就可以宣告該委託型別的變數,接著把這個變數初始化為與委託有相同返回型別和引數類別的函式引用,之後,就可以使用委託變數呼叫這個函式,就像該變數是乙個函式一樣。如 double multiply dou...