委託與事件
一、委託(delegate)
1、委託是一種可以把引用儲存為函式的型別。
2、在定義了委託後,就可以宣告該委託型別的變數,接著把這個變數初始化為與委託有相同返回型別和引數類別的函式引用,之後,就可以使用委託變數呼叫這個函式,就像該變數是乙個函式一樣。
如:
double multiply(double param1, double param2)
double divide(double param1, double param2)
delegate double processdelegate(double param1,double param2);//定義委託型別processdelegate
processdelegate process;//宣告委託型別的變數process
process = new processdelegate(multiply);//使用multiply初始化變數process
double m1 = process(1,2);//其實相當於呼叫multiply(1,2);
process = new processdelegate(divide);//使用divide初始化變數process
double m2 = process(1,2);//其實相當於呼叫divide (1,2);
3、可以把委託變數作為引數傳遞給乙個函式,如
void executefunction(processdelegate param)
二、事件
事件由物件引發,可以訂閱事件。訂閱乙個事件的含義是提供**,在事件發生時執行這些**,即事件處理程式。單個事件可供多個處理程式訂閱,在該事件發生時,這些處理程式都會被呼叫。事件處理程式可以在該事件的物件所在的類中,也可能在其他類中。事件處理程式其實就是乙個方法,其唯一的限制是它必須匹配於事件所要求的返回型別和引數,這個限制是事件定義的一部分,由乙個委託指定。具體可以參照如下的**及注釋:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.timers;
namespace testevent
public void connect()
public void disconnect()
private static random random = new random();
private void checkformessage(object source, elapsedeventargs e)}}
public class display
", message);
}public void displaymessage2(string message)
", message);}}
class program
}}
委託與事件
1.建立乙個類,分別建立加 減 乘 除四個方法,通過委託和事件,實現 輸入兩個計算數,完成所有的四個方法的呼叫,計算出結果顯示。建立乙個警察 policeman 類,乙個小偷 thief 類,例項化兩個類的物件,當policeman類中警笛鳴響 alarm 方法執行時,觸發小偷逃跑 runaway ...
委託與事件
委託就是以方法做引數進行傳遞,它定義的是方法的框架,如果用這個委託,所宣告的方法就必須按照給定的引數及返滬型別進行處理。宣告委託的方式 delegate 返回值型別 委託型別名 引數 比如delegate void stringprocess string s 注意這裡的除了前面的delegate,...
事件與委託
1.顧客去書店訂購某種型別 計算機 的書,當書店新到某型別的書籍,會通知需要此類書的顧客。2.當顧客的需求型別發生變化時,需要通知書店。using system using system.collections.generic using system.linq using system.text ...