前言: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. snmpwalk命令详解

    snmp安装 yum -y install net-snmp-libs net-snmp net-snmp-utils 系统镜像里面就有这些包.可yum安装 snmpwalk集合 snmpwalk + ...

  2. truffle 框架complie错误。

    第一次使用trulle框架编译合约发现编译失败,原因是没有在truffle-config.js文件中加入编译器版本. module.exports = { // See <http://truf ...

  3. 使用 CompeletedFuture 实现异步调用

    在我们平时写的项目中,异步调用是一个比较重要的优化手段,在 Java 中,提供了 CompletedFuture 供我们使用,具体实现如下: 例子 假如现在有一个需求,我需要去淘宝.天猫和京东去搜索某 ...

  4. 【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)

    在前一篇文章中,我们是把.NET 8应用读取SSL证书(X509)示例部署在App Service Windows环境中,那么如果部署在Linux环境,以及Linux Container中呢? 根据前 ...

  5. 代码审计——基础(JAVAEE)

    JAVAEE 目录 JAVAEE 常见框架 Struct2(控制层) Hibernate(持久层(与数据库交互)(不用再写简单的sql语句,但是需要一些列复杂的配置文件))(全ORM模型) Sprin ...

  6. python 如何判断一组数呈上升还是下降趋势

    1. python 判断一组数呈上升还是下降趋势的方法 要判断一组数(数列)是呈上升趋势.下降趋势还是无明显趋势,我们可以比较数列中相邻元素的差值.如果大部分差值都是正数,则数列呈上升趋势:如果大部分 ...

  7. json null (空值)不序列化

    json null (空值)不序列化 JsonSerializerSettings jsetting = new JsonSerializerSettings(); jsetting.DefaultV ...

  8. C#.NET 循环字符串 V20231123

    C#.NET 循环字符串 V20231123 public static bool IsIllegalOutTradeNo(string OutTradeNo) { foreach (char ite ...

  9. Next.js 13 如何使用loading.js

    要在next.js 13中使用loading.js,我们需要先在对应的文件目录下创建loading.js文件 文件结构如下: app test1 loading.tsx page.tsx 如上面的目录 ...

  10. 苹果手机 ios 系统如何升级为鸿蒙HarmonyOS

    用苹果手机的朋友们注意了 根据最新的可靠消息,苹果手机升级为HarmonyOS,教程如下: 第一步 手机电量充足的情况下,将苹果手机连接至WIFI无线网络. 第二步 ...... [下一页]