C# 關鍵字Event


1》》》

在委托實例前,不加event,那這個委托就是一個普通的委托,我們可以用別的函數調用,也可以直接用對象調用,但加上關鍵字之后,只能用成員函數調用 

  1. public delegate void MyButtonEventHandler(string msg);
  2. public class MyButton
  3. {
  4. public MyButtonEventHandler Click;
  5. private string msg;
  6. public void OnClick()
  7. {
  8. if (Click != null)
  9. {
  10. Click("我點擊了:" + msg);
  11. }
  12. }
  13. //構造函數
  14. public MyButton(string msg)
  15. {
  16. this.msg = msg;
  17. }
  18. }
 
  1. MyButton mb = new MyButton("MyButton對象");
  2. //指定點擊按鈕后的處理方法
  3. mb.Click += MyButton_Click;
  4. mb.Click("Click為公共委托對象,可任意觸發執行委托方法,而無需觸發OnClick方法");
  5. //點擊按鈕觸發委托方法
  6. //mb.OnClick();
  7. //響應處理方法
  8. private void MyButton_Click(string msg)
  9. {
  10. Response.Write(msg);
  11. }

 

使用event關鍵字:

  1. //定義一委托類型
  2. public delegate void MyButtonEventHandler(string msg);
  3. public class MyButton
  4. {
  5. //定義一委托實例(事件)
  6. public event MyButtonEventHandler Click;
  7. private string msg;
  8. ///
  9. /// 用於觸發Click事件(模擬點擊按鈕)
  10. ///
  11. public void OnClick()
  12. {
  13. if (Click != null)
  14. {
  15. Click("我點擊了:" + msg);
  16. }
  17. }
  18. //構造函數
  19. public MyButton(string msg)
  20. {
  21. this.msg = msg;
  22. }
  23. }

 

  1. MyButton mb = new MyButton("MyButton對象");
  2. mb.Click += MyButton_Click;
  3. //以下報錯
  4. //mb.Click("Click為雖公共委托對象,但不可隨意執行委托方法,因為有event關鍵字修飾!");
  5. //點擊按鈕后才觸發委托方法(保證只有MyButton對象才可觸發該事件)
  6. mb.OnClick();

 2》》》》》》》

delegate 委托
event 事件
事件是特殊的委托,是多播委托,可以添加多個事件處理函數,但是委托只能綁定一個處理函數。

c#中的delegate是Observe(觀察者)設計模式的一種實現,以多播委托為底層支持,且是類型安全的。

event就是delegate的一種應用。加上ev


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM