首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 委派淺析:從概念到實作的完整指南

     編輯:關於C#

什麼是委派?

委派是型別安全的函式指標,封裝了一或多個方法的參考。不同於 C++ 函式指標,委派是物件、支援多播、與型別系統整合,是事件模式的基石。

跨語言比較

語言對應機制範例
C++函式指標typedef int (*GetNum)(double);
Delphi程序型別type TGetNum = function(rNum: Real): Integer;
C#委派delegate string Do(string cmd);

核心優勢:解耦呼叫者與實作

經典「秘書模式」:主管(呼叫者)不需知道具體執行者(市場專員、生產專員),只對秘書(委派)下達指令,秘書依指令分派任務並回傳結果。

宣告與使用步驟

  1. 宣告委派型別:delegate string Do(string command);
  2. 建立委派實例:Do d = new Do(obj.Method); 或 Do d = obj.Method; (C# 2.0+ 方法群組轉換)
  3. 呼叫:d("command");

靜態與實例方法皆可綁定

委派不在乎目標方法是靜態還是實例方法,只要簽章相符即可。範例中 MarketMan.GetMarketInfo 為實例方法,ProductMan.ProduceProduct 為靜態方法,同一委派型別皆可指向。

進階特性

  • 多播委派:+/- 運算子串聯多個方法,依序呼叫
  • 匿名方法 / Lambda:Do d = cmd => ...; 簡化內嵌邏輯
  • Func/Action:預先定義的泛型委派,減少自訂型別
  • 事件:event 關鍵字限制外部只能 +=/-=,防止直接呼叫

最佳實踐

  • 慣用 EventHandler<TEventArgs> 模式實作事件
  • 避免在建構函式中註冊事件(記憶體洩漏風險)
  • 考慮 WeakEventManager 解決長壽命發布者與短壽命訂閱者的參考問題
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved