.Net Framework中的委托与事件
生活随笔
收集整理的這篇文章主要介紹了
.Net Framework中的委托与事件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
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"; // 添加產(chǎn)地作為演示//聲明委托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 的類重寫,以便繼承類拒絕其他對象對它的監(jiān)視protected virtual void OnBoiled(BoiledEventArgs e) {if (Boiled != null) { // 如果有對象注冊Boiled(this, e); // 調(diào)用所有注冊對象的方法 }}// 燒水。public void BoilWater() {for (int i = 0; i <= 100; i++) {temperature = i;if (temperature > 95) {//建立BoiledEventArgs 對象。BoiledEventArgs e = new BoiledEventArgs(temperature);OnBoiled(e); // 調(diào)用 OnBolied方法 }}}}// 警報(bào)器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: 嘀嘀嘀,水已經(jīng) {0} 度了:", e.temperature);Console.WriteLine();}}// 顯示器public class Display {public static void ShowMsg(Object sender, Heater.BoiledEventArgs e) { //靜態(tài)方法Heater heater = (Heater)sender;Console.WriteLine("Display:{0} - {1}: ", heater.area, heater.type);Console.WriteLine("Display:水快燒開了,當(dāng)前溫度:{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; //注冊靜態(tài)方法 heater.BoilWater(); //燒水,會自動調(diào)用注冊過對象的方法 }} }輸出為: Alarm:China Xian - RealFire 001: Alarm: 嘀嘀嘀,水已經(jīng) 96 度了: Alarm:China Xian - RealFire 001: Alarm: 嘀嘀嘀,水已經(jīng) 96 度了: Alarm:China Xian - RealFire 001: Alarm: 嘀嘀嘀,水已經(jīng) 96 度了: Display:China Xian - RealFire 001: Display:水快燒開了,當(dāng)前溫度:96度。 // 省略 ...
??//一個(gè)數(shù)的規(guī)則如下:1,1,2,3,5,8,13,21,34,.......求第30位數(shù)是多少,用遞歸算法實(shí)現(xiàn)。
using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace ConsoleApplication1 {//一個(gè)數(shù)的規(guī)則如下:1,1,2,3,5,8,13,21,34,.......求第30位數(shù)是多少,用遞歸算法實(shí)現(xiàn)。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);}} }
?
轉(zhuǎn)載于:https://www.cnblogs.com/ruishuang208/p/3323300.html
總結(jié)
以上是生活随笔為你收集整理的.Net Framework中的委托与事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 妮娜是谁唱的啊?
- 下一篇: 我终于是忍够了。不知道我反应是不是过激了