C# 中的委託是利用方法當作函數的參數,方便不同種類及功能的實現,一般包括有 delegate 、Action 、Func 、Predicate 四種,在這裡僅針對 Action & Func 兩種做介紹,有興趣的話再請各位自行研究其它兩種。 1. Action 可以沒有參數到 16個參數,沒有傳回值,範例如下透過泛型帶入2個參數 p1, p2 委託 ActionFunc 做為委託方法帶入函數 Test 中,根據帶入型別分別顯示出 "Hello World" & 17 的結果出來。 // T1 T2 為泛型參數定義 pubic static void Test<T1, T2>( Action action, T1 p1, T2 p2) { action (p1, p2); } public static void ActionFunc (string s, string h) { MessageBox.Show( s+h); } public static void ActionFunc (int s, int h) { MessageBox.Show( (s+h).ToString( )); } Test<string, string>(ActionFunc, "Hello", " World"); Test<int , int>(ActionFunc, 8, 9); 2. Func 一樣可以沒有參數到 16個參數,但必須有傳回值,範例如下透過泛型帶入2個參數 p1, p2 委託 FuncExample 做為委託方法帶入函數 Test 中,根據帶入型別一樣顯示出 "Hello World" & 17 的結果出來, 而其中須有回傳值設定(見紅字),最後透過 action(p1,p2) 回傳字串顯示 "OK String" & "OK int"。 // T1 T2 為泛型參數定義 pubic static void Test<T1, T2>( Func <T1, T2,