C#委托与事件习题
【案例】有个⾼档的热⽔器,包含⼀个加热器,⼀个报警器和⼀个现实屏,我们给热⽔器它通上电,当⽔温超过95度的时候:
1、报警器会开始发出语⾳,告诉你⽔的温度;
2、液晶屏也会改变⽔温的显⽰,来提⽰⽔已经快烧开了。
请使⽤观察者模式Observer表述上述三个关系,并在main⽅法⾥进⾏测试。
代码如下:
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Heater ht = new Heater();
Alarm alarm = new Alarm();
Display display = new Display();
ht.BoilEvert += alarm.MakeAlert;
ht.BoilEvert += display.ShowMsg;
ht.BoilWater();
Console.Read();
}
}
public class Heater
{
private int temperature;
public delegate void BoilHandler(int param);
public event BoilHandler BoilEvert;
public void BoilWater()
{
for (int i = 0; i <= 100; i++)
{
temperature = i;
if (temperature > 95)
{
if (BoilEvert != null)
{
BoilEvert(temperature);
}
}
}
}
}
public class Alarm
{
public void MakeAlert(int param)
{
Console.WriteLine("alarm:滴滴滴,⽔已经有{0}度了", param);
}
}
public class Display
{
public void ShowMsg(int param)
{
Console.WriteLine("display:⽔快开了,当前温度:{0}度", param);
}
}
}
运⾏结果如下图所⽰:
【案例】有⼀家三⼝,妈妈负责做饭,爸爸和孩⼦负责吃。。。将这三个⼈,想象成三个类。
妈妈有⼀个⽅法,叫做“做饭”。有⼀个事件,叫做“开饭”。做完饭后,调⽤开发事件,发布开饭消息。
杭州西湖介绍 爸爸和孩⼦分别有⼀个⽅法,叫做“吃饭”。
在main⽅法⾥,将爸爸和孩⼦的“吃饭”⽅法,注册到妈妈的“开饭”事件。也就是,订阅妈妈的开饭消息。让妈妈做完饭开饭时,发布吃饭消息时,告诉爸爸和孩⼦⼀声。
代码如下:
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Mom mom = new Mom();
Dad dad = new Dad();
Son son = new Son();
幼儿起名字>中国十大名牌化妆品mom.EatEvent += son.Eat;
mom.EatEvent += dad.Eat;
mom.Cook();
Console.ReadLine();
}
}
public class Mom
{
public delegate void EatHandler();
public event EatHandler EatEvent;
private void OnEat()
{
if (EatEvent != null)
{
EatEvent();
}
稚的拼音和组词
}
感冒通 打一成语public void Cook()
{
Console.WriteLine("妈妈开始煮饭");
Console.WriteLine("妈妈开始炒菜");
OnEat();
}
}
public class Dad
{
public void Eat()
{
Console.WriteLine("爸爸:好的我这就来吃饭");
}
}
public class Son
{
public void Eat()
{
Console.WriteLine("⼉⼦:等⼀会就去吃饭 ");
}
}
}
运⾏结果如下图所⽰:
三方协议
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论