网站开发的开发意义asp企业网站源码

张小明 2026/1/13 21:50:45
网站开发的开发意义,asp企业网站源码,公司做网站百度可以搜到吗,亚马逊seo什么意思为什么我要把事件放在委托这个专题里呢#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进行投诉反馈,一经查实,立即删除!

设计一份包含网站建设范高端做网站公司

Axolotl终极指南:10分钟快速上手的AI模型训练神器 【免费下载链接】axolotl 项目地址: https://gitcode.com/GitHub_Trending/ax/axolotl Axolotl是一款专为AI模型训练设计的开源工具,旨在简化大语言模型微调的复杂流程。无论你是AI新手还是资深…

张小明 2026/1/6 23:02:33 网站建设

淘宝客如何建设推广网站企业网站ui设计

RoslynPad终极指南:5个技巧快速提升C#开发效率 【免费下载链接】roslynpad 项目地址: https://gitcode.com/gh_mirrors/ros/roslynpad 想要一个轻量级的C#代码实验平台吗?RoslynPad正是你需要的免费利器。这个基于Roslyn编译器和AvalonEdit编辑器…

张小明 2026/1/7 20:49:02 网站建设

河北常见网站建设价格jpress和wordpress

目录已开发项目效果实现截图关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 ,本人源头供货商 python基于 Vue 的大学生国学自主学习…

张小明 2026/1/7 5:05:16 网站建设

天津电商网站开发网站的访问量怎么查

还在为手中的老Mac无法升级到最新系统而烦恼吗?是否觉得官方"淘汰"政策让你的设备提前退役太可惜?OpenCore Legacy Patcher就是为你量身打造的救星!这款革命性的开源工具专门解决苹果官方支持列表之外的兼容性问题,让你…

张小明 2026/1/7 5:02:08 网站建设

做网站 证书 浏览器seo网站诊断文档案例

服务器硬件选购与搭建指南 1. 服务器硬件特点与预算规划 1.1 服务器硬件特点 服务器通常无需图形用户界面(GUI),因此没有图形适配器和显示器,也不需要复杂的音频接口、游戏手柄连接等外设。由于 Windows Server 2008 有集中式网络管理工具,外设输入设备的需求也大大降低…

张小明 2026/1/7 20:40:38 网站建设

婚庆策划公司加盟杭州seo网站排名

Wan2.2-T2V-A14B生成视频的色彩空间一致性保障措施 在影视预演、品牌广告和虚拟制片等专业场景中,AI生成视频早已不再只是“能出画面”那么简单。用户真正关心的是:这段由文本驱动的视频是否足够稳定、连贯、符合视觉逻辑?尤其是当镜头持续5秒…

张小明 2026/1/13 19:44:30 网站建设