2022-09-11|閱讀時間 ‧ 約 3 分鐘

玩轉C#之【委派&事件】

介紹

委派
透過委派可以實現把方法作為參數傳遞
從範例可以看出我們將DoNothing當成參數在傳遞
public delegate void Test();
void Main()
{
Test method = new Test(this.DoNothing);//實體化一個委派
method += new Test(this.DoNothing);//實體化一個委派

method();//也可以省略Invoke的寫法
}

private void DoNothing()
{
Console.WriteLine("Test");
}

事件
事件:是帶event關鍵字的委派的實體,可以限制變數被外部直接使用/直接賦予值(安全保障) 特點:
  • 不能直接Invoke()
  • 不能 賦予 null = = null
委派和事件的區別和關係?
  • 委派是一個類型
  • 事件是委派類型的一個實例
事件:可以把一堆可變的動作/行為封裝出去,交給第三方指定 預定義一樣,程式設計的時候,我們可以把程式分成兩部分 一部分是固定的,直接寫死,還有不固定的地方,通過一個事件去開放接口,外部可以隨意地擴展動作
框架:完成固定/通用部分,把可變部分留出擴展點,支持自定義
譬如:我們在設計WinFrom的時候,框架已經把Butoon的偵測鼠左鍵點擊的寫完了,而我們只需要去撰寫滑鼠左健點下去要做的事情。

使用方式

  1. 宣告一個委派型別 public delegate void NoReturnNoPara();
  2. 產生一個委派物件 Test method = new Test(this.DoNothing);//實體化一個委派
  3. 執行委派方法method.Invoke();//使用他的方法 method();//也可以省略Invoke的寫法
關於泛型委派、解偶、非同步多執行緒、委派的歷史寫法演進之後會專門寫一篇文章跟大家講解

參考資料

本篇已同步發表至個人部落格 https://moushih.com/2022ithome11/
鐵人賽文章
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.