公司动态
学习action笔记
假设有个叫外卖的场景打电话给餐厅给我做个三明治做好了叫我。餐厅说我不知道你的电话号码没法叫你。因为没有 Action餐厅不知道做好后怎么通知你。如果有Action:// 餐厅的菜单public class Restaurant{// 接受订单你要什么 做好了打哪个电话public void MakeSandwich(string filling, Actionstring callWhenDone){Debug.Log($厨房收到做一个 {filling} 三明治);// 假装做饭等了 2 秒System.Threading.Thread.Sleep(2000);string message $你的 {filling} 三明治好了;// 照着便条上的电话打过去callWhenDone?.Invoke(message);}}// 你顾客public class Customer{public void Order(){Restaurant restaurant new Restaurant();// 点餐我要鸡蛋三明治这是我的电话 ↓↓↓restaurant.MakeSandwich(鸡蛋, notice {Debug.Log($收到通知{notice}); // 电话响了你接起来});}}Actionstring callWhenDone 就是留给餐厅的电话号码。餐厅不管你是谁也不管你接到电话后干嘛吃还是扔餐厅只管饭做完了 → 打这个电话 → 把通知内容告诉你两个参数的例子// 快递公司 public class ExpressCompany { // 寄快递东西 寄完了打这个电话告诉你是/否成功 快递单号 public void Send(string itemName, Actionbool, string callWhenDone) { Debug.Log($收到包裹{itemName}); // 假装寄件处理…… bool success true; string trackingNumber SF1234567890; // 打电话告诉你两个信息 callWhenDone?.Invoke(success, trackingNumber); } } // 你 public class Me { public void SendPackage() { ExpressCompany sf new ExpressCompany(); sf.Send(键盘, (done, number) { if (done) Debug.Log($寄出成功单号{number}); else Debug.Log(寄件失败); }); } }