委派是 C# 實作回呼的核心機制:型別安全的函式參考容器,可包含靜態/實例方法,支援多播(串聯多個目標)。
public delegate bool ContinueProcessing();
public void LengthyOperation(ContinueProcessing pred) {
foreach (var cl in _container) {
cl.DoLengthyOperation();
if (!pred()) return; // 若 pred 為多播委派,僅檢查最後一個目標回傳值!
}
}
public void LengthyOperation(ContinueProcessing pred) {
foreach (var cl in _container) {
cl.DoLengthyOperation();
bool bContinue = true;
foreach (ContinueProcessing pr in pred.GetInvocationList()) {
bContinue &= pr(); // 所有目標皆回傳 true 才繼續
}
if (!bContinue) return;
}
}
明確定義語意:所有回呼皆同意才繼續。
List.Sort(Comparison))。委派提供執行期綁定、型別安全、多目標支援的回呼機制。處理多播時務必注意例外傳播與回傳值語意,必要時手動遍歷 GetInvocationList() 實作自訂聚合邏輯。