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

.Net Framework中的委托与事件相关推荐

  1. 转载(四).Net Framework中的委托与事件

    尽管 (委托.事件与Observer设计模式 )中的范例很好地完成了我们想要完成的工作,但是我们不仅疑惑:为什么.Net Framework 中的事件模型和上面的不同?为什么有很多的EventArgs ...

  2. 观察者模式与.Net Framework中的委托与事件

    本文文字内容均选自<大话设计模式>一书. 解释:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够 ...

  3. C# 中的委托和事件

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  4. C# 中的委托和事件(1)

    C# 中的委托和事件 欢迎浏览本文的后续文章: C#中的委托和事件(续) PDF 浏览:http://www.tracefact.net/Document/Delegates-and-Events-i ...

  5. C# 中的委托和事件(转载)

    C# 中的委托和事件 (今天去因为委托和事件这两个东西把我搞得头疼死了,偶然发现这篇文章,觉得非常不错,就copy过来了!) 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而 ...

  6. 【转】C# 中的委托和事件

    阅读目录 C# 中的委托和事件 引言 将方法作为方法的参数 将方法绑定到委托 事件的由来 事件和委托的编译代码 委托.事件与Observer设计模式 .Net Framework中的委托与事件 总结 ...

  7. C# 中的委托和事件[转]

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  8. C# 中的委托和事件(详解) ....

    C# 中的委托和事件 委托和事件在 .NET Framework 中的应用非常广泛,然而,较好地理解委托和事件对很多接触 C# 时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太 ...

  9. [轉]C# 中的委托和事件

    轉自:http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html pdf:http://www.tracefact.net/Doc ...

最新文章

  1. 检测用户是允许还是拒绝使用摄像头.
  2. 没有绿幕,AI也能完美视频抠图,发丝毕现,毫无违和感 | CVPR
  3. python装饰器-python装饰器是哪个版本支持的
  4. 荣耀鸿蒙os2.0报名入口,华为鸿蒙系统2.0在哪报名
  5. 说说JSON和JSONP
  6. 高斯混合模型聚类_GMM: Gaussian Mixed Model(高斯混合模型)
  7. 9切换中文mac_超详细的Mac重装系统教程!让重装系统变得简单起来!
  8. 关于ptype_all和pypte_base中的pt_prev的说明[转]
  9. dva源码解析(一)
  10. azure云数据库_Azure SQL数据库的安全注意事项
  11. java 过滤器(参数传递中文乱码)
  12. crt怎么退出编辑模式_securecrt怎么退出当前指令
  13. iOS OC和Swift相互引用,测试在swift项目
  14. 计算机学术论文shortessay,期末论文essay
  15. FileZilla Server与FileZilla Client
  16. excel宏编程 c语言,宏(巨集)
  17. 从fig文件导出数据【MATLAB】
  18. windows如何使用远程桌面连接电脑
  19. CHIP-seq流程学习笔记(7)-热图软件 deeptools
  20. RV1126笔记二十三:Nginx及cgi移植

热门文章

  1. c语言增强,C语言提高-day5
  2. java 文件拷贝文件怎么打开_java如何拷贝文件
  3. php thrift 报错,thrift安装遇到的问题以及解决方法(必看篇)
  4. python中get和set使用_Python对象属性的set和get方法
  5. linux文件描述符与标识符,文件描述符fd
  6. java程序a-z b-y_有一行电文,以按下面规律译成密码: A---Z a---z B---Y b---Y C---X c---x …… 即第1个字母编程第26个字...
  7. 怎样删除usb计算机连接网络打印机驱动,惠普激光打印机安装驱动时报“跟这台计算机连接的一个 USB 设备运行不正...
  8. 惠普硬盘安装linux,hp台式电脑原本是linux系统,如何安装win7系统
  9. shell脚本求和_【零基础学云计算】Shell编程之case语句与循环语句
  10. java datasource mysql_Java MysqlDataSource類代碼示例