委派:delegate
- 它的本質上是一個Class,主要用來定義method的類型
- 可以把它想像為一個定義method容器,用來儲存要傳遞的method。
- 使用委派讓你可以在呼叫method先處理一些邏輯,當這些邏輯處理完之後,在傳入這些method。
以下是他的語法
1 | 存取修飾詞 delegate 返回值 委派名(參數列表); |
- 如果沒寫存取修飾詞的話,預設為public的,
- 若取修飾詞寫為private的話,則其他namespace不可以使用
- 委派的method參數必須要對應
宣告範例
1 | // 定義了一個無參無返回值容器 MyFun |
使用範例
1 | delegate void MyFun(); |
C#預設先定義的委派
- Action:是一個無參無返回值的委派
- Func:一個無參數,但有一個返回泛型TResult的委派
- Action
(T obj)可以傳多個參數(最多有16個,是使用overload的方式),無返回的委派 - Func<in T, out TResult>(T arg); 可以傳多個參數,且有一個返回泛型TResult的委派
- 記憶方式:Func是有返回值的委託,而Action則是不會返回值的委託
Action例子
1 | Action<int, string> action = FunTest; |
Func例子
1 | Func<int, int> func = FunTest2; |