C#学习笔记(11)——深入事件,热水器案例
说明(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)——深入事件,热水器案例的更多相关文章
- Kali学习笔记11:僵尸扫描案例
什么是僵尸扫描?本质也是端口扫描,不过是一种极其隐蔽的扫描方式 所以几乎不会被发现,不过也有着很大缺陷:扫描条件很高 首先需要有一台僵尸机,这里我找好一台win10僵尸机器,IP地址为:10.14.4 ...
- Spring 源码学习笔记11——Spring事务
Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...
- Ext.Net学习笔记11:Ext.Net GridPanel的用法
Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...
- SQL反模式学习笔记11 限定列的有效值
目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...
- iOS学习笔记之触摸事件&UIResponder
iOS学习笔记之触摸事件&UIResponder 触摸事件 与触摸事件相关的四个方法如下: 一根手指或多根手指触摸屏幕 -(void)touchesBegan:(NSSet *)touches ...
- golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好
golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好 jetbrain家的全套ide都很好用,一定要dark背景风格才装B 从File-->s ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- Python3+Selenium3+webdriver学习笔记11(cookie处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...
- 并发编程学习笔记(11)----FutureTask的使用及实现
1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...
- 《C++ Primer Plus》学习笔记11
<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...
随机推荐
- Java 图片矢量压缩
直接贴出工具类源码 package com.snow.web.util.publics; import java.awt.Image; import java.awt.image.BufferedIm ...
- 删除vector指定位置的元素
原文链接: http://www.cnblogs.com/yeahgis/archive/2012/05/29/2523476.html #include <vector>#include ...
- Python 文件 readlines() 方法
概述 Python 文件 readlines() 方法用于读取整个文件(所有行)到一个列表,可以由for... in ... 结构进行遍历.列表的每一行变成列表的每一个元素. 语法 readlines ...
- x电容和Y电容
https://wenku.baidu.com/view/c0a68a6a4a7302768e9939bd.html 根據 IEC 60384-14, 電容器分為 X 電容及 Y 電容 , 1. X ...
- stm32调试过程中如何判断是程序问题还是硬件问题?
可以用软件仿真,如果软件仿真时寄存器什么的都正确,而硬件在线仿真时不对,则说明是板子硬件的问题
- 百度地图 隐藏百度地图Logo
/* 隐藏百度Logo */ .BMap_cpyCtrl, .anchorBL {display: none; }
- 微软牛津项目人脸识别API初探
按照董子的这篇博客中的介绍,到微软牛津项目的网站申请到测试用的人脸识别Key,按照官方文档的介绍,把wpf项目建好之后,按照一步步的流程下来就可以完成example中的功能了.但是这仅仅是个examp ...
- mysql -- 优化之ICP(index condition pushdown)
一.为了方法说明ICP是什么.假设有如下的表和查询: create table person( id int unsigned auto_increment primary key, home_add ...
- ubuntu 安装python mysqldb
sudo apt-get install python-mysqldb #!/usr/bin/python #-*-coding:utf-8-*- ''' This file include all ...
- jsonp原理和jquey jsonp原理实践
$.ajax({ type: "get", async: false, url: "ajax.htm", dataType: "jsonp" ...