檢舉內容
玩轉C#之【委派&事件】

2022/09/11閱讀時間約 1 分鐘

介紹

委派

透過委派可以實現把方法作為參數傳遞
從範例可以看出我們將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/
鐵人賽文章
為什麼會看到廣告
贊助支持創作者,成為他繼續創作的動力吧!
一代軍師
一代軍師
程式語言、理財自我投資、加密貨幣、資訊安全 https://moushih.com/
留言0
查看全部
發表第一個留言支持創作者!
一代軍師 的其他內容
玩轉C#之【物件導向】
閱讀時間約 2 分鐘
玩轉C#之【特性(attribute)】
閱讀時間約 1 分鐘
玩轉C#之【反射 射爆妳】
閱讀時間約 3 分鐘
玩轉C#之【泛型】
閱讀時間約 6 分鐘
玩轉C#之【Hangfire】
閱讀時間約 6 分鐘
你可能也想看
領取見面禮
只要設定追蹤作者,即可享有 48小時
Premium 閱讀權限