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

C# 委派基礎:定義、多播鏈與策略模式應用

     編輯:關於C語言

委派本質與定義

委派是型別安全的函式指標,本質上是繼承自 MulticastDelegate 的密封類別。


// 定義:回傳 int,接受兩個 int
public delegate int OperationDelegate(int x, int y);

// 實例化:指向符合簽名的方法
OperationDelegate del = Add; // 靜態方法
// 或
OperationDelegate del = new OperationDelegate(Add);

多播委派鏈

委派實例可組合多個目標方法:


OperationDelegate chain = null;
chain += Add;      // 加入
chain += Multiply; // 加入
chain -= Add;      // 移除

// 呼叫時依序執行,回傳值為最後一個目標的回傳值
int result = chain(3, 2);

注意:多播委派回傳值只保留最後一個,若需收集所有結果請自行迴圈呼叫 GetInvocationList()。

委派的核心價值:策略模式


// 演算法接受委派參數
public int Operate(int a, int b, OperationDelegate op) => op(a, b);

// 呼叫端決定具體策略
int r1 = Operate(10, 5, Add);       // 15
int r2 = Operate(10, 5, Multiply);  // 50
int r3 = Operate(10, 5, (x,y) => x - y); // 5 (Lambda)

實務案例:多目標輸出

需求:0~100 數字輸出到 Console、ListBox、檔案

  • 定義 ShowNumberDel 委派
  • 實作三個符合簽名的方法
  • 按鈕決定單一或組合輸出

此即「策略模式」的委派實作版,避免建立策略介面與多個類別的儀式感。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved