委托是類型安全的方法引用,類似 C++ 函數指針但更安全。所有委托派生自 System.Delegate,是實現事件、回調、異步編程的基石。
delegate int NumberChanger(int n); // 聲明 NumberChanger nc = new NumberChanger(AddNum); // 實例化綁定方法 int result = nc(5); // 調用
使用 +/- 組合委托,調用時按順序執行所有目標:
NumberChanger nc = nc1 + nc2; // nc1 和 nc2 同類型 nc(5); // 依次執行 nc1(5) 然後 nc2(5)
示例輸出:Value of Num: 75(10→+25=35→*5=175?實際為順序調用累積)。
delegate void PrintString(string s);
static void WriteToScreen(string s) => Console.WriteLine(s);
static void WriteToFile(string s) { /* 寫文件 */ }
static void SendString(PrintString ps) => ps("Hello World");
// 使用
SendString(WriteToScreen);
SendString(WriteToFile);
現代 C# 常用 Func、Action、Predicate 預定義委托,減少自定義聲明。