网站设计怎么做好高清素材视频去哪里找

张小明 2026/3/12 19:54:22
网站设计怎么做好,高清素材视频去哪里找,做甜点的网站,wordpress主题转typecho为什么我要把事件放在委托这个专题里呢#xff1f;主要的原因是事件是委托的高级封装。 换句话说#xff0c;先有委托才有事件#xff0c;委托是事件的基础#xff0c;事件是委托的封装。 我们先看一个不用委托的例子#xff0c;这个代码要求实现这样的功能#xff1a;小…为什么我要把事件放在委托这个专题里呢主要的原因是事件是委托的高级封装。换句话说先有委托才有事件委托是事件的基础事件是委托的封装。我们先看一个不用委托的例子这个代码要求实现这样的功能小猫叫-小孩哭-妈妈安慰-爸爸询问-邻居抱怨这样的一个由小猫叫引发的一系列事件。同时这个例子也是一个简单的观察者模式如果没有了解过观察者模式请大家仔细阅读代码或者询问AI大模型相信你可以理解。usingSystem;// 第一步定义委托小猫叫的方法签名无参数、无返回值publicdelegatevoidCatCryHandler();// 第二步定义猫类发布者包含公共委托字段publicclassCat{// 公开的委托字段无任何封装publicCatCryHandlerCatCryDelegate;// 小猫叫的方法publicvoidMiao(){Console.WriteLine( 小猫喵呜~~~);// 调用委托触发所有绑定的方法CatCryDelegate?.Invoke();}}// 第三步定义订阅者小孩、妈妈、爸爸、邻居publicclassChild{publicvoidCry()Console.WriteLine( 小孩哇呜呜呜怕怕~);}publicclassMother{publicvoidComfort()Console.WriteLine( 妈妈宝宝不怕妈妈抱~);}publicclassFather{publicvoidAsk()Console.WriteLine( 爸爸咋了猫又叫了);}publicclassNeighbor{publicvoidAngry()Console.WriteLine( 邻居大半夜的吵死了);}// 测试代码classProgram{staticvoidMain(string[]args){// 1. 创建对象CatkittynewCat();ChildchildnewChild();MothermomnewMother();FatherdadnewFather();NeighborneighbornewNeighbor();// 2. 绑定委托订阅kitty.CatCryDelegatechild.Cry;kitty.CatCryDelegatemom.Comfort;kitty.CatCryDelegatedad.Ask;kitty.CatCryDelegateneighbor.Angry;// ❌ 问题1外部可以直接赋值覆盖所有之前的绑定// 比如不小心写了而不是之前的4个方法全没了kitty.CatCryDelegatechild.Cry;// 现在委托里只剩小孩哭其他都没了// ❌ 问题2外部可以直接调用委托不用等小猫叫Console.WriteLine( 外部直接调用委托小猫还没叫);kitty.CatCryDelegate.Invoke();// 直接触发小孩哭逻辑混乱// ❌ 问题3外部可以直接置空委托清空所有绑定kitty.CatCryDelegatenull;// 3. 调用小猫叫方法但委托已经被置空啥都不执行Console.WriteLine(\n 小猫真的叫了 );kitty.Miao();Console.ReadLine();}}运行结果暴露的坑 外部直接调用委托小猫还没叫 小孩哇呜呜呜怕怕~ 小猫真的叫了 小猫喵呜~~~能看到直接用公共委托字段外部可以随意修改、触发、清空委托完全破坏了 “只有小猫叫才触发动作” 的逻辑 —— 这就是事件要解决的核心问题给委托加 “保护罩”。二、第二步引入事件解决委托的坑事件的本质就是 “封装委托的保护罩”只开放「订阅」和「取消订阅-」禁止外部赋值、直接调用、置空。核心改法把委托字段换成事件只需要改猫类里的一行代码再理解事件的核心规则即可publicclassCat{// ❌ 原来的公共委托字段有坑// public CatCryHandler CatCryDelegate;✅// 改成事件基于同一个委托publiceventCatCryHandlerCatCryEvent;publicvoidMiao(){Console.WriteLine( 小猫喵呜~~~);// 只有猫类内部能调用事件触发委托CatCryEvent?.Invoke();}}三、完整的 “小猫叫 事件” 实现从头写逐行解释下面是完整、可运行的代码每一步都配解释跟着看就能懂usingSystem;// 第一步定义委托事件的“底层契约”// 委托定义了“小猫叫要触发的方法”的签名无参数、无返回值// 所有要绑定到事件的方法必须符合这个签名publicdelegatevoidCatCryHandler();// 第二步定义发布者猫类拥有事件publicclassCat{// 定义事件语法是「public event 委托类型 事件名;」// 编译器会自动生成私有委托字段 仅开放/-的add/remove方法publiceventCatCryHandlerCatCryEvent;// 小猫叫的核心方法只有这个方法能触发事件publicvoidMiao(){Console.WriteLine(\n 小猫喵呜~~~);// 触发事件调用底层委托只有猫类内部能执行这行代码// ?. 是“空值保护”如果没有订阅者委托为null不会报错CatCryEvent?.Invoke();}}// 第三步定义订阅者关注小猫叫的对象// 订阅者1小孩publicclassChild{publicstringName{get;}publicChild(stringname)Namename;// 订阅方法签名必须和委托CatCryHandler一致无参数、无返回值publicvoidCry()Console.WriteLine(${Name}哇呜呜呜怕小猫~);}// 订阅者2妈妈publicclassMother{publicstringName{get;}publicMother(stringname)Namename;publicvoidComfortChild()Console.WriteLine(${Name}宝宝不怕小猫不咬人~);}// 订阅者3爸爸publicclassFather{publicstringName{get;}publicFather(stringname)Namename;publicvoidCheckCat()Console.WriteLine(${Name}别慌我去看看小猫~);}// 订阅者4邻居publicclassNeighbor{publicstringName{get;}publicNeighbor(stringname)Namename;publicvoidComplain()Console.WriteLine(${Name}谁家的猫啊吵死了);}// 第四步使用事件订阅、触发、取消订阅classProgram{staticvoidMain(string[]args){// 1. 创建发布者小猫CatkittynewCat();// 2. 创建订阅者ChildxiaoMingnewChild(小明);MotherliLinewMother(李丽);FatherzhangSannewFather(张三);NeighborwangYenewNeighbor(王大爷);// 3. 订阅事件外部只能用 不能用Console.WriteLine( 开始订阅小猫叫事件 );kitty.CatCryEventxiaoMing.Cry;// 小明订阅小猫叫→小明哭kitty.CatCryEventliLi.ComfortChild;// 李丽订阅小猫叫→妈妈安慰kitty.CatCryEventzhangSan.CheckCat;// 张三订阅小猫叫→爸爸查看kitty.CatCryEventwangYe.Complain;// 王大爷订阅小猫叫→邻居抱怨// 4. 触发事件只能通过猫类的Miao方法外部不能直接调用Console.WriteLine(\n 第一次小猫叫 );kitty.Miao();// 5. 取消订阅外部只能用 -Console.WriteLine(\n 王大爷取消订阅 );kitty.CatCryEvent-wangYe.Complain;// 王大爷不想听了取消订阅// 6. 再次触发事件Console.WriteLine(\n 第二次小猫叫王大爷已取消);kitty.Miao();// ❌ 以下操作全部编译报错事件的保护机制注释掉可验证// kitty.CatCryEvent xiaoMing.Cry; // 错误不能用赋值只能/-// kitty.CatCryEvent.Invoke(); // 错误外部不能直接触发事件// kitty.CatCryEvent null; // 错误外部不能置空事件Console.ReadLine();}}运行结果符合预期无安全隐患 开始订阅小猫叫事件 第一次小猫叫 小猫喵呜~~~ 小明哇呜呜呜怕小猫~ 李丽宝宝不怕小猫不咬人~ 张三别慌我去看看小猫~ 王大爷谁家的猫啊吵死了 王大爷取消订阅 第二次小猫叫王大爷已取消 小猫喵呜~~~ 小明哇呜呜呜怕小猫~ 李丽宝宝不怕小猫不咬人~ 张三别慌我去看看小猫~四、拆解事件的核心规则结合小猫例子用表格总结每一条都对应上面的代码一看就懂操作 / 规则具体说明小猫例子是否允许定义事件猫类里写public event CatCryHandler CatCryEvent;✅ 必须在类内部定义订阅事件外部用kitty.CatCryEvent 方法名如 xiaoMing.Cry✅ 外部仅允许这个操作取消订阅外部用kitty.CatCryEvent - 方法名如- wangYe.Complain✅ 外部仅允许这个操作触发事件只有猫类内部能写CatCryEvent?.Invoke()在 Miao 方法里❌ 外部绝对不能直接赋值事件外部写kitty.CatCryEvent xiaoMing.Cry❌ 编译报错置空事件外部写kitty.CatCryEvent null❌ 编译报错事件的本质编译器自动生成 “私有委托字段 仅开放 /- 的方法”✅ 不用自己写编译器帮你封装五、进阶用内置委托Action简化代码实战常用上面我们自定义了CatCryHandler委托实际开发中可以用 .NET 内置的Action无参数、无返回值省去自定义委托的步骤代码更简洁usingSystem;// 猫类直接用Action定义事件无需自定义委托publicclassCat{// 用内置Action替代自定义CatCryHandlerpubliceventActionCatCryEvent;publicvoidMiao(){Console.WriteLine(\n 小猫喵呜~~~);CatCryEvent?.Invoke();}}// 订阅者、测试代码和之前完全一样无需修改// 因为Action的签名就是“无参数、无返回值”和我们的订阅方法匹配运行结果和之前完全一致但少写了public delegate void CatCryHandler();这一行 —— 这是实际开发中最常用的写法。总结核心要点记牢这 3 条就够了事件的本质是委托的 “安全封装”就像给委托加了个 “保护罩”只允许外部做「订阅」和「取消订阅-」核心权限只有定义事件的类猫类能触发事件调用Invoke外部只能订阅 / 取消订阅不能赋值、不能直接触发、不能置空使用流程定义委托或用内置 Action/Func→ 类里定义事件 → 外部订阅事件 → 类内部触发事件 → 可选外部取消订阅。用小猫叫的例子再梳理一遍猫事件拥有者只在 “叫” 的时候触发事件小孩 / 妈妈 / 邻居订阅者只能选择 “听”订阅或 “不听”取消订阅不能强迫猫叫外部触发也不能把别人的 “听” 权限删掉覆盖委托—— 这就是事件的核心逻辑。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

赵公口网站建设自媒体运营怎么学

终极文件压缩与二维码生成解决方案:跨平台工具完全指南 【免费下载链接】解压缩全能王与二维码生成器-多平台工具包 解压缩全能王与二维码生成器 - 多平台工具包欢迎使用解压缩全能王与二维码生成器资源包,本资源包含两个核心工具:1. **解压缩…

张小明 2026/3/5 2:16:17 网站建设

上海传媒公司艺人网络优化工程师面试题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个电商实时竞价系统的WebSocket服务架构方案,要求:1. 使用Nginx作为WebSocket反向代理和负载均衡;2. 包含Redis发布订阅模式处理竞价消息广…

张小明 2026/3/5 2:16:21 网站建设

建设高校实验室教学网站的作用网站控制面板

在AI图像生成技术日新月异的今天,如何在保持高质量输出的同时大幅降低计算成本,成为行业面临的共同挑战。Nunchaku Team最新发布的nunchaku-flux.1-krea-dev模型,通过创新的量化技术实现了这一目标,让高性能图像生成不再局限于高端…

张小明 2026/3/5 2:16:20 网站建设

代备案网站网站开发技术课程设计总结

32. 【涌现之镜 整体大于部分之和】简单的神经元放电,涌现出意识;平凡的水分子,汇聚成海洋的深邃。当个体遵循简单的规则聚集,便会诞生无法从个体预见的宏伟。社会、文化、生命,皆是涌现的奇迹。我们既是规则的遵循者…

张小明 2026/3/5 2:37:55 网站建设

平台网站怎么推广如何搜网站

文章目录 一、物理层故障 二、数据通信类故障 三、配置管理类故障 四、安全相关故障 五、软件与系统故障 六、预防性建议(运维最佳实践) 以下是交换机常见故障的分类总结,涵盖故障现象、可能原因及应对建议,适用于企业网络、校园网等使用场景(截至2025年12月): 一、物理…

张小明 2026/3/5 2:19:21 网站建设

凡科网站是什么做的哪里可以学网站开发

源代码加密方案如何选择?一文读懂两种主流技术 企业在保护核心代码资产时,常面临一个难题:市面上众多的源代码加密方案,究竟哪种更适合自己的开发环境?本文将深入解析两种主流加密技术,帮助企业做出明智选…

张小明 2026/3/5 2:16:22 网站建设