Java 中用 Callable<T> 傳遞「可重試的代碼塊」:
Stat result = RetryLoop.callWithRetry(client, () -> client.getZooKeeper().setData(...));
delegate string CustomDelegate(string material);
string BakePizza(string m) => $"將{m}烘烤成西瓜";
CustomDelegate bake = BakePizza;
PizzaMaker.MakePizza("張三的Pizza", bake);
PizzaMaker.MakePizza("李四的Pizza", delegate(string m) {
return $"將{m}烘烤成面包";
});
PizzaMaker.MakePizza("季義欽的Pizza", m => $"將{m}烘烤成意大利pizza");
=> 左側參數,右側表達式/語句塊。return。using System; delegate TResult Func(); // 無參有返回值委托 class RetryHelper { public static T ExecuteWithRetry (Func action, int maxRetries = 3) { for (int i = 0; ; ++i) { try { return action(); } catch when (i < maxRetries) { /* 等待、記錄 */ } } } } class Program { static void Main() { // Lambda 直接傳遞業務邏輯 var result = RetryHelper.ExecuteWithRetry(() => { // 呼叫 ZooKeeper API return zooKeeper.setData(path, data, version); }); } }
Action (無返回)、Func<TResult> (有返回)、Predicate<T> (bool 返回)。掌握委托與 Lambda,是編寫現代 C#(.NET)高階框架、異步編程、LINQ 查詢的基礎。