说明(2017-6-14 15:04:13):

1. 热水器案例,为了便于理解,采用了蹩脚但直观的英文命名,哼哼。

heater类,加热,声明一个委托,定义一个委托事件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _12事件
{
public delegate void MyDel(int temp);
class Heater
{
public event MyDel del;
private int temp; public int Temp
{
get { return temp; }
set { temp = value; }
}
public void Heat()
{
for (int i = ; i < ; i++)
{
temp = i;
if (temp > )
{
if (del != null)
{
del(temp);
}
}
}
}
}
}

Alarmer类,警报:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _12事件
{
class Alarmer
{
public void Alarm(int temp)
{
Console.WriteLine("滴滴滴,报警!!水已经{0}度了", temp);
}
}
}

ShowTemper,显示器类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _12事件
{
class ShowTemper
{
public void ShowTemp(int temp)
{
Console.WriteLine("屏幕显示:当前温度{0}度", temp);
}
}
}

main函数,委托绑定警报和显示两个方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _12事件
{
class Program
{
static void Main(string[] args)
{
Heater heater = new Heater();
Alarmer alarmer = new Alarmer();
ShowTemper showtemper = new ShowTemper();
heater.del += alarmer.Alarm;
heater.del += showtemper.ShowTemp; heater.Heat();
//heater.del(heater.Temp);
Console.ReadKey();
}
}
}

参考资料:

http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

C#学习笔记(11)——深入事件,热水器案例的更多相关文章

  1. Kali学习笔记11:僵尸扫描案例

    什么是僵尸扫描?本质也是端口扫描,不过是一种极其隐蔽的扫描方式 所以几乎不会被发现,不过也有着很大缺陷:扫描条件很高 首先需要有一台僵尸机,这里我找好一台win10僵尸机器,IP地址为:10.14.4 ...

  2. Spring 源码学习笔记11——Spring事务

    Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...

  3. Ext.Net学习笔记11:Ext.Net GridPanel的用法

    Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...

  4. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  5. iOS学习笔记之触摸事件&UIResponder

    iOS学习笔记之触摸事件&UIResponder 触摸事件 与触摸事件相关的四个方法如下: 一根手指或多根手指触摸屏幕 -(void)touchesBegan:(NSSet *)touches ...

  6. golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

    golang学习笔记11   golang要用jetbrain的golang这个IDE工具开发才好  jetbrain家的全套ide都很好用,一定要dark背景风格才装B   从File-->s ...

  7. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  8. Python3+Selenium3+webdriver学习笔记11(cookie处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...

  9. 并发编程学习笔记(11)----FutureTask的使用及实现

    1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...

  10. 《C++ Primer Plus》学习笔记11

    <C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...

随机推荐

  1. Centos6.5使用yum安装mysql——快速上手必备(转)

    第1步.yum安装mysql[root@stonex ~]#  yum -y install mysql-server安装结果:Installed:    mysql-server.x86_64 0: ...

  2. Oracle 12C -- clone a non-cdb as a pdb

    将non-CDB置为只读模式: $ sqlplus '/as sysdba' SQL> select name, decode(cdb, 'YES', 'Multitenant Option e ...

  3. 12C -- 配置EM Express的端口

    EM Express是基于web接口的图形化数据库管理工具. 内嵌到数据库中,可以用来监控.管理数据的性能和完成大多数管理工作. EM Express是轻量级的管理工具,减少了数据库服务器的开销.没有 ...

  4. Linux中断的系统调用

    早期UNIX系统的一个特性是:如果在进程执行一个低速系统调用而阻塞期间捕捉到一个信号,则该系统调用就被中断不再继续执行.该系统调用返回出错,其errno设置为EINTR.这样处理的理由是:因为一个信号 ...

  5. 公网用户接入NAT后面的freeswitch配置

    大致网络示意和终端号码: 客户端侧: 终端号码(1019)终端IP(192.168.1.15)+ 网关(192.168.1.1) + 路由器公网IP(动态地址) 服务器侧: 防火墙(181.92.2. ...

  6. 【转】UML类图符号 6种关系说明以及举例

    转自http://www.cnblogs.com/duanxz/archive/2012/06/13/2547801.html UML中描述对象和类之间相互关系的方式包括:依赖(Dependency) ...

  7. 视图不能由多个 ListView 共享 (View can't be shared by more than one ListView) 的一个解决方法

    1.问题的起因 在WPF中遇到一异常,如题. 因此做一个Demo代码来复现问题,代码如下: <Window x:Class="WpfAppThread.MainWindow" ...

  8. Python 爬虫 解决escape问题

    爬取某个国外的网址,遇到的编码问题 ,在前段页面 返回的数据是 亞洲私人珍藏賣,令仝好分享他為此 所傾注的心血與熱愛。 爬虫源码是: url = 'http://www.bonhams.com/auc ...

  9. 在springboot 和 mybatis 项目中想要显示sql 语句进行调试

    在springBoot+Mybatis日志显示SQL的执行情况的最简单方法就是在properties新增: logging.level.com.dy.springboot.server.mapper= ...

  10. mybatis-generator自动生成dao,mapping,model

    mybatis-generator下载地址:https://github.com/mybatis/generator/releases/tag/mybatis-generator-1.3.2 下载好后 ...