前言: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方法,且符合事件的签名;

~~~~~~~~~~~~~~~~~~~~~~~~

以上,初步感受。

未完待续》》》

C#事件总结的更多相关文章

  1. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  2. Jquery的点击事件,三句代码完成全选事件

    先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  3. 关于 Chrome 浏览器中 onresize 事件的 Bug

    我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...

  4. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  5. C++中的事件分发

    本文意在展现一个C++实现的通用事件分发系统,能够灵活的处理各种事件.对于事件处理函数的注册,希望既能注册到普通函数,注册到事件处理类,也能注册到任意类的成员函数.这样在游戏客户端的逻辑处理中,可以非 ...

  6. 移动端IOS点击事件失效解决方案

    解决方案 解决办法有 4 种可供选择: 1 将 click 事件直接绑定到目标元素(即 .target)上 2 将目标元素换成 <a> 或者 button 等可点击的元素 3 将 clic ...

  7. Android笔记——Button点击事件几种写法

    Button点击事件:大概可以分为以下几种: 匿名内部类 定义内部类,实现OnClickListener接口 定义的构造方法 用Activity实现OnClickListener接口 指定Button ...

  8. HTML 事件(一) 事件的介绍

    本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...

  9. HTML 事件(二) 事件的注册与注销

    本篇主要介绍HTML元素事件的注册.注销的方式. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流.事件委托 4. ...

  10. HTML 事件(三) 事件流与事件委托

    本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...

随机推荐

  1. JDK源码阅读-------自学笔记(十一)(java.lang.String包装类)

    核心要点 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为"不可变对象" String的核心就是char[]字符串,外部写的string对 ...

  2. 解决idea 控制台输出乱码问题:

    解决idea 控制台输出乱码问题[IntelliJ IDEA 2022.1.3 (Ultimate Edition)]: 将两个地方文件编码设置成GBK     参考文档:https://blog.c ...

  3. synchronized锁升级过程

    更过博文请关注:https://blog.bigcoder.cn JDK 1.6后锁的状态总共有四种,级别由低到高依次为:无锁.偏向锁.轻量级锁.重量级锁,这四种锁状态分别代表什么,为什么会有锁升级? ...

  4. 七年之痒!一个 PHP 程序员职业生涯的自述

    大家好,我是码农先森. 今年刚好是我毕业的第七个年头,在婚姻感情当中都有一种「七年之痒」的说法,这次我把这个词「七年之痒」用一次在我的职业生涯复盘上.七年前我从告别校园,踏入互联网编程行业,七年后我依 ...

  5. go 使用 consul api filter 过滤注意点

    当你的value里面有-特殊符号的时候你应该像这样使用Service == "foo-bar"

  6. Newtonsoft.Json 首字母小写

    // 首字母小写 JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings(); jsonSerialize ...

  7. .Net6 winform 程序使用依赖注入

    .net Blazor webassembly 和 webAPI 内建支持依赖注入, Winform 和 Console 应用虽然不带有依赖注入功能, 但增加依赖注入也很简单. 本文将示例如何为 Wi ...

  8. 分享一个关于Avl树的迭代器算法

    1 研究过程 前段时间在研究avl树的迭代实现,在节点不使用parent指针的情况下,如何使用堆栈来实现双向地迭代.我参考了网络上的大部分迭代器实现,要么是使用了parent指针(就像c++的map容 ...

  9. nginx使用lua waf防火墙来做防CC配置

    nginx添加lua模块 启动和安装nginx yum install -y nginx systemctl daemon-reload systemctl enable nginx #为了实验方便这 ...

  10. 多项分布模拟及 Seaborn 可视化教程

    多项分布 简介 多项分布是二项分布的推广,它描述了在 n 次独立试验中,k 种不同事件分别出现次数的离散概率分布.与二项分布只能有两种结果(例如成功/失败)不同,多项分布可以有 k 种(k ≥ 2)及 ...