介紹
委派
透過委派可以實現把方法作為參數傳遞
從範例可以看出我們將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的偵測鼠左鍵點擊的寫完了,而我們只需要去撰寫滑鼠左健點下去要做的事情。
使用方式
- 宣告一個委派型別
public delegate void NoReturnNoPara();
- 產生一個委派物件
Test method = new Test(this.DoNothing);//實體化一個委派
- 執行委派方法method.Invoke();//使用他的方法
method();//也可以省略Invoke的寫法
關於泛型委派、解偶、非同步多執行緒、委派的歷史寫法演進之後會專門寫一篇文章跟大家講解
參考資料
鐵人賽文章