1.C#的处理事件整个框架,其实就是观察者模式的一种应用

观察者模式:老师监视学生考试,学生若作弊,老师立即打人

2.涉及的元素:

所以必须涉及两个对象,事件引发者(触发)--学生;事件处理者--老师

同时涉及两个事件,触发事件--作弊;处理事件--打人

3.学生类

//其实Cheating就是一个委托,而委托就是一组函数的集合,函数类(汗!!委托 这名字起得太烂了)

public event EventHandler Cheating;//这个事件是学生引发的,所以事件应该写在学生类里

//触发事件,要跟定义事件在同一个类中(只要调用了这个方法,就会出发整个事件的进行,监听->满足条件->动作)

public void Testing(){

//...

if(Cheating!=null)//不为null表示有其他对象在监听他

Cheating(this,new EventArgs());//都说了,委托实质就是方法,委托的参数固定为两个:第一个问触发者object;第二个为参数EventArgs

}

4.老师类

Student _student = new Student();//老师监视学生,所以把学生写成老师的成员变量,组合

_student.Cheating += new EventHandler(SlapStudent);//给学生绑定作弊事件,同时绑定老师发现作弊后的动作函数

//处理事件当然得写在 监视者(观察者)里

public void SlapStudent(object sender,EventArgs e){

//给学生一个打耳光

}

C#自定义处理事件(作者还没完全理解事件和委托,所以有可能错漏百出)的更多相关文章

  1. .Net Actor 服务端开发框架,Newbe.Claptrap 项目周报 1 - 还没轮影,先用轮跑

    Newbe.Claptrap 项目周报 1,第一周代码写了一点.但主要还是考虑理论可行性. 第一次接触本框架的读者,可以先点击此处阅读本框架相关的基础理论和工作原理. 周报是啥? 成功的开源作品,离不 ...

  2. gRPC趁现在还没大火,抢先了解一下

    前言 系统分布式已经成为程序员的家常,将大型单体划分为相对简单的小模块,分散系统能力,提升系统扩展性.功能模块复用性等:各功能模块之间肯定会有很多数据共享和交互的应用场景,那就避免不了各模块之间的通信 ...

  3. 升级过log4j,却还没搞懂log4j漏洞的本质?

    摘要:log4j远程代码漏洞问题被大范围曝光后已经有一段时间了,今天完整讲清JNDI和RMI以及该漏洞的深层原因. 本文分享自华为云社区<升级过log4j,却还没搞懂log4j漏洞的本质?为你完 ...

  4. 你好,C++(21)只要天还没黑,就一直在工地干活-4.3.1 while循环:只要…就一直…

    4.3  循环控制语句 在现实世界中,有这样一类现象: 只要油箱中的当前油量小于油箱容量100升,就一直往油箱中加油: 一直不断地为祖国辛勤工作,只要我还活着: 公司100000位员工,每个人的工资都 ...

  5. 趁webpack5还没出,先升级成webpack4吧

    上一次将webpack1升级到3,也仅是 半年前,前端工具发展变化太快了,如今webpack4已经灰常稳定,传说性能提升非常高,值得升级. 一直用着的webpack3越来越慢,一分多钟的编译时间简直不 ...

  6. 造轮子,模仿WPF的UI框架,还没完善。。。

    Wtf(暂时命名,随便起的 = _=),模仿WPF的框架,还没有完善,只有简单的基础元素,支持数据绑定.虽然支持mono但是mono有bug 写这个只是兴趣爱好,感觉也没多大意义了,如果这个UI框架完 ...

  7. 在各方面还没准备好的时候,大家一定要慎用border-box样式!!!!

    这几天,我被一个js问题困扰到癫狂了! 事情是这样的,我之前写了个功能非常复杂的纯jquery代码的前端gridview控件,实现了大量的功能和效果,在一些项目里也用得很好. 最近有个项目,样式做了调 ...

  8. 成功熬了四年还没死?一个IT屌丝创业者的深刻反思

    三个IT屌丝创业的故事 从前有三个屌丝,聚在一起做网络.提供免费的网络服务,砸锅卖铁,通宵达旦,除了卖肾,啥都做了.3年后终于做到了五百万用户.对于年轻人来说,能把五百万人玩弄于鼓掌之间,已经是很牛逼 ...

  9. php大力力 [013节]mySQL数据库乱码问题我还没解决

    <?php echo"测试<br>"; $sql_connection = mysql_connect("localhost","e ...

随机推荐

  1. 微服务中的健康监测以及其在ASP.NET Core服务中实现运行状况检查

    1 .什么是健康检查? 健康检查几乎就是名称暗示的.它是一种检查您的应用程序是否健康的方法.随着越来越多的应用程序转向微服务式架构,健康检查变得尤其重要(Health Check).虽然微服务架构有很 ...

  2. 我的"gethup"(GitHub)注册之旅

    大家好,我叫张琪琪,来自网络工程143(学号1413042062),.平时喜欢运动,也喜欢看电视尤其是动漫.其实对于自己的编程能力没有多大自信,如果看着题目回忆课本内容写下的程序也算的话,那是敲过不少 ...

  3. Linq使用中的ToList注意事项

    在使用Linq时,如果查询逻辑太复杂,可以拆分为多个Linq查询,下一个Linq在上一个Linq查询的结果上继续操作,这样逻辑清晰,又不会出错.但在使用ToList的时候需要注意,最常见碰到的错误是: ...

  4. cesium编程入门(九)实体 Entity

    cesium编程入门(九)实体 Entity 在cesium编程入门(五)绘制形状提到过添加实体的方法,这一节聊一聊实体相关的一些内容: 先来看 Entity 的各个属性 id 唯一标志,如果没设置, ...

  5. Sql语法高级应用之四:使用视图实现多表联合数据明细

    之前章节我们讲到:如果某个表的数据是多个表的联合,并且存在列与列的合并组成新列,用视图是最好的方案. 下面我分享两个个真实的SQL语句案例 USE Wot_Inventory GO FROM sys. ...

  6. sqlserver排名函数

    在做开发的时候,排名函数是sqlserver经常用到的函数,在分页的时候需要用,分组的时候也要用,主要排名函数有row-number,rank(),dense-rank(),NTILE()接下来详细说 ...

  7. POJ的练习题

    http://wenku.baidu.com/link?url=PT1gkBWC3eXuzzs0QqWklC0VNYkf5ynxBFguXPGYR22l1D2tXmQ4VjnsWvbFyvj1fqGi ...

  8. es6中export、export default、import的理解

    export 与 import 的使用 export 与import是es6中新增模块功能最主要的两个命令.我们要知道在es6中,实现了模块功能,而且相当简单,意在取代commonjs和AMD规范.成 ...

  9. linux强制安装rpm包的命令

    rpm -ivh *********.rpm  --nodeps --force 强制安装会忽略掉所有依赖关系,强制进行安装

  10. kinect 2(ubuntu16.04)

    安装libfreenect2 参考 https://github.com/OpenKinect/libfreenect2/blob/master/README.md#linux 如果安装后找不到有关库 ...