C#事件总结
前言:C#的事件也是一项非常关键的技术,必须要深刻的理解,本质上是基于委托的;
事件模型的五个组成部分:
1.事件的拥有者—— event source,对象;
2.事件的成员——event,成员;
3.事件的响应者——event subscriber,对象;
4.事件处理器——event handler,方法成员——本质上是一个回调方法;
5.事件订阅——把事件处理器和事件关联在一起,本质上是一种以委托类型为基础的“约定”;
下面来简单举个例子感受一下事件:
使用VS自带的Timer的Elapsed事件来关联2个自定义的对象;
1 using System; 2 using System.Timers; 3 4 namespace SimpleEventTest 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 Timer timer = new Timer();//实例化一个timer 11 Boy boy = new Boy();//实例化一个boy 12 Girl girl = new Girl();//实例化一个girl 13 timer.Elapsed += boy.Act;//关联事件 14 timer.Elapsed += girl.Act; 15 timer.Interval = 1000; 16 timer.Start();//运行timer,一旦满足条件自动触发被关联的方法; 17 Console.ReadLine(); 18 } 19 } 20 class Boy 21 { 22 private int count = 0; 23 internal void Act(object sender, ElapsedEventArgs e) 24 { 25 count++; 26 Console.WriteLine("Boy:Jump>>>"+count); 27 } 28 } 29 class Girl 30 { 31 private int count = 0; 32 internal void Act(object sender, ElapsedEventArgs e) 33 { 34 count++; 35 Console.WriteLine("Girl:Jump>>>" + count); 36 } 37 } 38 }
运行的效果:
值得注意的一些技巧:
1.用来相应事件的方法命名最好取名有意义:比如上面的Action();
2.当我们新建一个空的Boy类时,直接先写实例boy的boy.Action,会提示红色波浪线;
此时,
自动生成Act方法,且符合事件的签名;
~~~~~~~~~~~~~~~~~~~~~~~~
以上,初步感受。
未完待续》》》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App