当前位置: 首页 > 编程日记 > 正文

.Net Framework中的委托与事件

using System;
using System.Collections.Generic;
using System.Text;namespace Delegate {// 热水器public class Heater {private int temperature;public string type = "RealFire 001";       // 添加型号作为演示public string area = "China Xian";         // 添加产地作为演示//声明委托public delegate void BoiledEventHandler(Object sender, BoiledEventArgs e);public event BoiledEventHandler Boiled; //声明事件// 定义BoiledEventArgs类,传递给Observer所感兴趣的信息public class BoiledEventArgs : EventArgs {public readonly int temperature;public BoiledEventArgs(int temperature) {this.temperature = temperature;}}// 可以供继承自 Heater 的类重写,以便继承类拒绝其他对象对它的监视protected virtual void OnBoiled(BoiledEventArgs e) {if (Boiled != null) { // 如果有对象注册Boiled(this, e);  // 调用所有注册对象的方法
           }}// 烧水。public void BoilWater() {for (int i = 0; i <= 100; i++) {temperature = i;if (temperature > 95) {//建立BoiledEventArgs 对象。BoiledEventArgs e = new BoiledEventArgs(temperature);OnBoiled(e);  // 调用 OnBolied方法
              }}}}// 警报器public class Alarm {public void MakeAlert(Object sender, Heater.BoiledEventArgs e) {Heater heater = (Heater)sender;     //这里是不是很熟悉呢?//访问 sender 中的公共字段Console.WriteLine("Alarm:{0} - {1}: ", heater.area, heater.type);Console.WriteLine("Alarm: 嘀嘀嘀,水已经 {0} 度了:", e.temperature);Console.WriteLine();}}// 显示器public class Display {public static void ShowMsg(Object sender, Heater.BoiledEventArgs e) {   //静态方法Heater heater = (Heater)sender;Console.WriteLine("Display:{0} - {1}: ", heater.area, heater.type);Console.WriteLine("Display:水快烧开了,当前温度:{0}度。", e.temperature);Console.WriteLine();}}class Program {static void Main() {Heater heater = new Heater();Alarm alarm = new Alarm();heater.Boiled += alarm.MakeAlert;   //注册方法heater.Boiled += (new Alarm()).MakeAlert;      //给匿名对象注册方法heater.Boiled += new Heater.BoiledEventHandler(alarm.MakeAlert);    //也可以这么注册heater.Boiled += Display.ShowMsg;       //注册静态方法
heater.BoilWater();   //烧水,会自动调用注册过对象的方法
       }}
}输出为:
Alarm:China Xian - RealFire 001:
Alarm: 嘀嘀嘀,水已经 96 度了:
Alarm:China Xian - RealFire 001:
Alarm: 嘀嘀嘀,水已经 96 度了:
Alarm:China Xian - RealFire 001:
Alarm: 嘀嘀嘀,水已经 96 度了:
Display:China Xian - RealFire 001:
Display:水快烧开了,当前温度:96度。
// 省略 ...

//一个数的规则如下:1,1,2,3,5,8,13,21,34,.......求第30位数是多少,用递归算法实现。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{//一个数的规则如下:1,1,2,3,5,8,13,21,34,.......求第30位数是多少,用递归算法实现。public class MainClass{public static void Main(){Console.WriteLine(Foo(30));Console.ReadKey();}public static int Foo(int i){if (i <= 0)return 0;else if (i > 0 && i <= 2)return 1;else return Foo(i - 1) + Foo(i - 2);}}
}

转载于:https://www.cnblogs.com/ruishuang208/p/3323300.html

相关文章:

中国电子学会青少年编程能力等级测试图形化一级编程题:小鸡与鸭妈拥抱

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

坦克世界服务器未响应怎么解决,华硕笔记本老是程序未响应怎么处理

电脑型号 华硕 P45VJ 笔记本电脑操作系统 Windows 7 专业版 64位 ( DirectX 11 )处理器 英特尔 第三代酷睿 i7-3520M 2.90GHz 双核主板 华硕 P45VJ (英特尔 Ivy Bridge - HM76 Express 芯片组)内存8 GB ( 尔必达 DDR3 1600MHz )主硬盘 日立 HGST HTS541010A9E680 ( 1 TB / 540…

中国电子学会青少年编程能力等级测试图形化一级编程题:无奈的Jaime

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

解决jupyter中无自己创建的虚拟环境

最近看的教程都是用的jupyter&#xff0c;按理说都一样吧&#xff0c;但是pycharm中python有的模块就弃用了&#xff0c;而jupyter却都可以用&#xff0c;而且jupyter听说也不错&#xff0c;就配置了一下下 1.打开cmd&#xff0c;激活你的虚拟环境&#xff0c;我的是tensorflow…

从“如何学会做一只机械表”讲如何创新,如何做好产品

Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00015862 为什么我总劝第一次创业的人先做山寨产品呢&#xff1f;因为游戏行业太多人太有理想了&#xff0c;因为玩过的好游戏很多&#xff0c;所以有冲动想自己做游戏&#xff0c;这样入行的人太多&a…

放大 旋转 css3,CSS3详解:transform 的旋转、旋转放大、放大、移动

CSS3 transform是什么&#xff1f;transform的含义是&#xff1a;改变&#xff0c;使…变形&#xff1b;转换CSS3 transform都有哪些常用属性&#xff1f;transform的属性包括&#xff1a;rotate() / skew() / scale() / translate(,) &#xff0c;分别还有x、y之分&#xff0c…

Web SCADA 电力接线图工控组态编辑器

前言 SVG并非仅仅是一种图像格式&#xff0c; 由于它是一种基于XML的语言&#xff0c;也就意味着它继承了XML的跨平台性和可扩展性&#xff0c;从而在图形可重用性上迈出了一大步。如SVG可以内嵌于其他的XML文档中&#xff0c;而SVG文档中也可以嵌入其他的XML内容&#xff0c;各…

IE6、IE7、IE8的CSS、JS兼容

Internet Explorer 6中查看使用 Microsoft JScript 的网页&#xff0c;可能会遇到web浏览器速度较慢的性能问题。原因是如果js脚本同时创建大量变量&#xff0c;jscript引擎执行垃圾收集算法时会监视脚本中变量分配的 数量、脚本中使用的文字值的数量和脚本中分配的字符串值的总…

中国电子学会青少年编程能力等级测试图形化一级编程题:海底世界

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 海底世界 1. 准备工作 &#xff08;1&#xff09;背景&#xff1a;Underwater…

小说站 章节内容 ajax,第17章 作业分析与异步编程原理——2019年5月14日22:00

5月14日作业完善购物车的删除与编辑功能谈一下你对单线程,任务队列与事件循环, 同步与异步的理解单线程&#xff1a;单线程在程序执行时&#xff0c;所走的程序路径按照连续顺序排下来&#xff0c;前面的必须处理好&#xff0c;后面的才会执行。比如&#xff1a;JavaScript就是…

【转载】图像缩放与插值理论基础

图像的缩放 图像经过缩放后有可能在原图中招不到对应的像素点&#xff0c;这需要用图像插值来解决。 1.理论基础 假设图像的X轴方向缩放比例是Kx&#xff0c;Y轴方向的缩放比是Ky&#xff0c;则缩放后输出图像的点&#xff08;x , y&#xff09;对应原图中坐标&#xff08;u , …

【组队学习】【32期】SQL编程语言

SQL编程语言 航路开辟者&#xff1a;王复振、杨煜、闫钟峰、杨梦迪、苏鹏、红星、张晋、汪健麟领航员&#xff1a;李云龙航海士&#xff1a;蒋志强、闫钟峰 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/wonderful-sql开源内容&#xff1a;https://hub.…

查找手机型号云服务器,查找手机型号云服务器

查找手机型号云服务器 内容精选换一换您可以通过“应用管理”页面的应用列表&#xff0c;快速查看应用状态&#xff0c;及相关异常信息&#xff0c;如图1所示。包括&#xff1a;应用状态&#xff1a;即图1中的①应用异常信息&#xff1a;即图1中的②云服务器异常信息&#xff1…

浅谈25种设计模式(4/25)(此坑未填)

设计模式汇总 创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式&#xff0c;而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式&#xff08;Factory Pattern&#xff09;抽象工厂模式&#xf…

C#学习笔记8:HTML和CSS基础学习笔记

<!-- 1、<P>...</P>段落标签 2、<br/>折行标签。 3、<img src"" height"*px" width"*px" alt"图片描述">。 注意&#xff1a;不能写成<img ></img>的形式。 4、html注释&#xff1a;<!-- …

青少年编程竞赛交流群周报(第043周)

2021年12月26日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第四十三期直播活动。 一、直播内容 我们直播活动的主要内容如下&#xff1a; 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题&#xff08;四级&#xff09;。…

数据库备份到文件服务器,数据库文件备份到云服务器上

数据库文件备份到云服务器上 内容精选换一换目前数据库服务器备份Agent安装包需要提交工单进行获取。当前仅支持x86计算类型的服务器&#xff0c;暂不支持鲲鹏计算类型的服务器。用户需要启用数据库备份前&#xff0c;需先在弹性云服务器上更改安全组和安装客户端。本章节指导用…

android String.format

资源创建&#xff1a; <!-- 多参数验证 --> <string name"text">截止到:%1$tc\n销售量比去年增长了%2$d%%\n在这里我对所有奋斗的兄弟姐妹表示感谢\n对表现最优秀 的%3$s等伙伴我们予以奖励\n奖励为价值%4$-9.4e的新马泰游\n希望大家再接再厉额!<…

【组队学习】【32期】数据可视化(Matplotlib)

数据可视化&#xff08;Matplotlib&#xff09; 航路开辟者&#xff1a;杨剑砺、杨煜、耿远昊、李运佳、居凤霞领航员&#xff1a;王万航海士&#xff1a;范歆琦、张文恺 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/fantastic-matplotlib开源内容&…

没有完美的人或事

下面以苹果手机为例&#xff0c;说明一个问题当实际值与期望值不符合的时候&#xff0c;人会出现的感情状况 公众人物与普通人 像公众人物类的&#xff0c;在公众面前肯定要表现正式一点的&#xff0c;这个是必须的&#xff0c;这个是有非常大的影响力的。我们的期望值大于或等…

如何理解分时系统的四个特征

多路性 服务多个用户 独立性 各用户独立 及时性 当一个任务暂时不能执行&#xff0c;CPU如子弹上膛般立刻换上另一任务&#xff0c;决不空闲 交互性 即人机交互 分时操作系统服务多个用户&#xff0c;并且让每个用户觉得自己是唯一的用户&#xff08;它怎么做到这一点的&#x…

中国电子学会青少年编程能力等级测试图形化一级编程题:小狗进圈

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 小狗进圈 小狗非常听话&#xff0c;收到命令能在舞台上向右移动&#xff0c;如…

Swift 值类型和引用类型的内存管理

1、内存分配 1.1 值类型的内存分配 在 Swift 中定长的值类型都是保存在栈上的&#xff0c;操作时不会涉及堆上的内存。变长的值类型&#xff08;字符串、集合类型是可变长度的值类型&#xff09;会分配堆内存。 这相当于一个 “福利”&#xff0c;意味着你可以使用值类型更快速…

jquery获取浏览器宽高

满足获取各种高的需求 $(document).ready(function() { alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(document.body).height());//浏览器时下窗口文档body的高度 alert($(document.body).oute…

操作系统的管理功能

1.CPU/处理器管理 2.存储器/内存管理 3.文件管理 4.I/O设备管理 一般来讲为以上四大管理功能&#xff0c;如果有第五 5.作业管理

秦州:西瓜书 + 南瓜书 吃瓜系列 13. 降维与度量学习(上)

吃瓜教程——西瓜书南瓜书 Datawhale南瓜书是经典机器学习教材《机器学习》&#xff08;西瓜书&#xff09;的公式推导解析指南&#xff0c;旨在让在学习西瓜书的过程中&#xff0c;再也没有难推的公式&#xff0c;学好机器学习。 内容属性&#xff1a;机器学习&#xff08;理…

flash 入门课知识小结

一、 几种类型帧的小结&#xff1a;&#xff08;关键帧、空白关键帧、普通帧&#xff09;1. 特点 帧——是进行flash动画制作的最基本的单位&#xff0c;每一个精彩的flash动画都是由很多个精心雕琢的帧构成的&#xff0c;在时间轴上的每一帧都可以包含需要显示的所有内容&…

VUE解决微信签名,SPA微信invalid signature问题,完美处理

深度解决方案&#xff0c;包教不包会&#xff0c;只因为踩坑无数&#xff0c;希望大家能有所收获 前端小菜鸟&#xff0c;因为项目要对接微信的jssdk&#xff0c;对接就需要签名认证&#xff0c;但是无奈安卓和IOS各有各的坑&#xff0c;本篇文章只讨论签名&#xff0c;和一个分…

如何打开写好的jpetstore

1.停止正在占用8080端口的应用 打开cmd窗口&#xff0c;输入netstat -ano | find “:8080”&#xff0c;查到pid 输入tasklist /fi “pid eq pid”&#xff0c;查到应用的名字 打开任务管理器&#xff0c;停止应用 2.第二步就比较神奇了 打开tomcat的bin目录&#xff0c;先sh…

打通Fedora19的ssh服务

Fedora19的SSH服务是默认关闭的&#xff0c;安装后我们需要打通它。 首先&#xff0c;编辑/etc/ssh/sshd_config&#xff0c;把下面黑体字部分打开注释&#xff0c;如下&#xff1a; # $OpenBSD: sshd_config,v 1.89 2013/02/06 00:20:42 dtucker Exp $# This is the ssh…