這兩天重新溫習了一下關於委托和事件方面的知識,總結一下。
一.委托
委托就是能夠將方法作為變量來傳遞。
C#中使用委托的具體步驟是:
(1)委托的聲明。其參數形式一定要和想要包含的方法的參數形式一致。委托可以在程序運行時調用不同的方法,只要這個方法簽名和委托簽名保持一致。
格式:
[修飾符] delegate 返回類型 委托號(參數列表)
例如:
MyDelegate1( MyDelegate2();//無參數
聲明一個委托的對象,與聲明一個普通類對象的方式一樣。
MyClass1 cls = = = = MyDelegate2(cls.dMethod3);
委托名 委托對象;
(2)定義所有要定義的方法,其參數形式和第一步中聲明的委托對象的參數形式必須相同。
定義委托相對應的方法:
dMethod1( dMethod2((4)通過委托對象調用包含在其中的方法
d1( dbTemp=d3();
詳細實例:
dMethod1( dMethod2( MyDelegate1( Main(= = = = MyDelegate1 d4 = d1 + dbTemp = MyEventHander active; += EventHandler(handler);在winform窗體中
OkButton.Click+= EventHandler(OkButton.Click);
只要事件被觸發,所預定的方法就會被調用。
事件的取消
格式:
事件名 -=new 委托名(方法名);
OkButton.Click-= EventHandler(OkButton.Click);
對於事件的操作只能使用+=和-=這兩種運算符。
(3)事件的發生
事件的發生就是對事件相對應的委托的調用,也就是委托的調用列表中包含的各個方法的調用。
格式:
事件名(參數);
詳細實例:
MyEventHandler(); MyEventHandler activate; Fire() (activate != Main(= += MyEventHandler(Handler); evt.Fire(); Main(= = += alarm.MakeAlarm; heater.Boiled += ( Alarm()).MakeAlarm; heater.Boiled += += Display.ShowMsg; type = area = BoiledEventArgs(.temperature = (Boiled != ,e); ( i = ; i <= ;i++=(temperature>= = ShowMsg(= sender