.NET 2.0 引入 Action 與 Func 兩個泛型委派,.NET 3.0 再加入 Lambda 表達式,極大簡化委派的定義與使用。本文透過範例說明這些委派與 params 關鍵字的實際應用。
Action 封裝無回傳值(void)的方法,提供 0 到 4 個輸入參數的 5 個版本:
Action:無參數Action<T>:一個參數Action<T1, T2>:兩個參數Action<T1, T2, T3>:三個參數Action<T1, T2, T3, T4>:四個參數using System;
using System.Windows.Forms;
public class Name {
private string instanceName;
public Action ShowName;
public void Show() { if (ShowName != null) ShowName(); }
public Name(string name) { this.instanceName = name; }
public void DisplayToConsole() { Console.WriteLine(this.instanceName); }
public void DisplayToWindow() { MessageBox.Show(this.instanceName); }
}
public class ActionStudy {
public static void Main() {
Name testName = new Name("Koani");
testName.ShowName = () => testName.DisplayToWindow();
testName.Show();
}
}
此處使用 Lambda () => testName.DisplayToWindow() 指派給 ShowName,執行 Show() 時會彈出視窗顯示名稱。
Func 封裝有回傳值的方法,最後一個型別參數為回傳型別。常見版本:Func<TResult>、Func<T, TResult> 等。
EventHandler 為事件處理常見委派簽名。params 允許方法接受可變數量參數,配合委派可實現靈活的回呼模式。
善用內建泛型委派與 Lambda,可減少自訂委派類型,提升程式碼可讀性與維護性。