当前位置: 首页 > news >正文

学习action笔记

假设有个叫外卖的场景

打电话给餐厅:"给我做个三明治,做好了叫我。"

餐厅说:"我不知道你的电话号码,没法叫你。"

因为没有 Action,餐厅不知道做好后怎么通知你

如果有Action:

// 餐厅的菜单
public class Restaurant
{
// 接受订单:你要什么 + 做好了打哪个电话
public void MakeSandwich(string filling, Action<string> 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}"); // 电话响了,你接起来
});
}
}

Action<string> callWhenDone 就是留给餐厅的电话号码

  • 餐厅不管你是谁,也不管你接到电话后干嘛(吃还是扔)
  • 餐厅只管:饭做完了 → 打这个电话 → 把通知内容告诉你

两个参数的例子:

// 快递公司 public class ExpressCompany { // 寄快递:东西 + 寄完了打这个电话(告诉你是/否成功 + 快递单号) public void Send(string itemName, Action<bool, 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("寄件失败"); }); } }
http://www.cnnetsun.cn/news/3837267.html

相关文章:

  • 当你的机械键盘开始“自言自语“:一个程序员与连击问题的战斗日记
  • 5步搞定明日方舟智能公招:MAA一键解放双手的终极指南
  • 东南大学/山东大学/临沂大学AFM:用焦耳热把Mn单原子“冻”进硬碳,钠电负极跑到8500圈
  • lightweight-human-pose-estimation-3d-demo.pytorch性能评测:MPJPE指标与推理速度分析
  • 5分钟掌握G-Helper:华硕笔记本轻量级控制工具的完整指南
  • 如何快速使用GoldHEN金手指管理器:面向PS4玩家的完整指南
  • 鸣潮自动化脚本:智能解放双手,告别重复劳动的游戏助手终极指南
  • 5个步骤快速搭建企业级协同办公平台:DzzOffice开源办公套件完整指南
  • HealthGPT-Pro-8B性能深度测评:横扫12项医疗基准测试的幕后技术
  • 如何快速获取网盘真实下载链接:网盘直链下载助手完整使用指南
  • RimSort:开源模组管理工具如何解决《边缘世界》玩家的加载顺序难题
  • TachiyomiAZ扩展功能详解:安装与管理扩展,获取更多漫画资源
  • 地铁车站、区间和机电设备告警,数字孪生怎么统一处置?
  • VideoDownloadHelper技术解析:浏览器视频下载引擎的架构设计与实现原理
  • 3个实战技巧实现抖音视频批量下载与高效素材管理
  • 合规数字化落地:IoT智能锁如何解决网约房民宿治安监管与运维痛点
  • OpenVoiceV2:支持6国语言的免费语音克隆终极解决方案
  • 终极实时屏幕翻译神器:Translumo完整使用指南
  • 黑进抱抱脸的是一头“怪物“,救它的却是中国开源模型
  • 大麦抢票自动化系统:3步实现高效智能抢票解决方案
  • AI辅助失效分析:让模型串联EDX/SEM证据链
  • 018、FastViT-MA混合注意力机制复现:在YOLOv12 Backbone中替换3x3卷积的实战教程
  • Crono:革命性Ruby on Rails定时任务调度器,彻底摆脱Unix Cron依赖
  • 从Swift到Android:Kronos跨平台时间同步方案对比分析
  • Unity高性能滚动列表架构解析:从原理到生产级优化
  • 炉石传说脚本终极指南:5步实现智能自动化挂机与卡组测试
  • 如何快速配置大麦自动化抢票系统:面向新手的完整指南
  • SQL 从入门到精通 · 系列总目录
  • B2B平台询盘转化低?3个GEO内容技巧提升精准流量
  • 团队批量翻译PDF时,如何设计文件命名、版本和校验流程?