关于事件:这里为什么是 Bioevent != null ??
(一)例题:假设我们有个高档的热水器,我们给它通上电,当水温超过95°的时候:1、扬声器会开始发出语音,告诉你水的温度;2、液晶屏也会改变水温的显示,来提示水已经快烧开了。首先,定义一个类Heater,代表热水器。然后定义一个字段temp,表示水温。最后定义三个方法。HeatingWater()表示给水加热,VoiceAlarm()表示语音提示警报。ShowWater()显示水温。
代码如下:
namespace C_sharp学习
{
class Heater
{
public delegate void Biodelegate(int pem);
public event Biodelegate Bioevent;
int temp;
public void HeatingWater()
{
for (int i = 0; i < 100; i++)
{
temp = i;
if (temp > 95)
{
if (Bioevent != null)
{
Bioevent(temp);
}
}
}
}
}
class Alarn
{
public void VoiceAlarn(int pem)
{
Console.WriteLine("警报:嘀嘀嘀,水已经{0}°了!",pem);
}
}
class Display
{
public void ShowWater(int pem)
{
Console.WriteLine("显示:嘀嘀嘀,水快烧开了,当前温度是:{0}°。",pem);
}
}
class Program
{
static void Main(string[] args)
{
Heater heater = new Heater();
Alarn alarn = new Alarn();
Display display = new Display();
heater.Bioevent += alarn.VoiceAlarn;
heater.Bioevent += display.ShowWater;
//heater.Bioevent -= alarn.VoiceAlarn;
//heater.Bioevent -= display.ShowWater;
heater .HeatingWater ();
Console.ReadLine ();
}
}
}
(二)理解
第一步:程序运行到 heater .HeatingWater ();,即调用了HeatingWater ()方法,于是HeatingWater ()开始执行。
执行的结果是i(水温)增加,到达95°以上。
第二步:当水温i到达95°时,引发事件 Bioevent(temp);这个事件引发后,调用两个方法,即:VoiceAlarn()温度警报 和 ShowWater()显示温度。
这些理解没有问题,只是对这段代码理解不了,为什么是 if (Bioevent != null)?
if (temp > 95)
{
if (Bioevent != null)
{
Bioevent(temp);
}
即:事件Bioevent不为空的时候,引发事件。
当temp=96°时,进入 if (Bioevent != null),这里程序怎么判断Bioevent一定不为空然后引发事件呢?困惑!困惑!!
小虾不知如何理解???望高手大侠们不吝赐教!小虾在此先谢谢了!!