C#事件机制!由一个小例子说来!

 c#中事件,大家众所周知,关键字event,定义一个事件,但是,事件的修饰符需要的是一个代理。代理是什么?代理,就是对于一个事件的引用。相当于c中的指针。其实,最简单的代理机制,大家都见过,看看: btnSelect.Click += new EventHandler(btnSelect_Click);    EventHandler就定义了一个代理,于是,当我们点击一个按钮的时候,其Click事件会触发,那么响应并处理该事件的就是btnSelect_Click。好,今日,群里一朋友询问,一个类似加热器报警的程序能否更简便,我就建议不如用事件机制来实现。因为报警主要是判断温度是否达到指定值,超过这个值就报警,很典型的应用事件的场合啊。初略代码如下:

View Code
 ///<summary>
/// 热水器
///</summary>
public class Heater
{
public delegate void showTempDel(int x);
public event showTempDel showTemp;

private int trmparature;
///<summary>
/// 温度
///</summary>
public int Temperature
{
get { return trmparature; }
set
{
trmparature = value;
if (trmparature > 98)
{
showTemp(trmparature);
}
}
}

///<summary>
/// 加热
///</summary>
public void Heating()
{
Temperature += 1;
}

///<summary>
/// 警报器
///</summary>
///<returns></returns>
//public bool Alarm()
//{
// if (Temperature > 98)
// return true;
//}
}
static void Main(string[] args)
{
Heater heater = new Heater();
heater .showTemp +=new Heater.showTempDel(heater_showTemp);
heater.Temperature = 100;
}
private static void heater_showTemp(int temp)
{
if (temp > 98)
{
MessageBox.Show(">98!");
}
}
}

其实只是一个很简单的逻辑,但是应用事件和代理来实现,会很简洁。可能,这也是事件给我们带来的便利的一面吧,当然,事件的应用很广泛,这只是一个例子,大家可以拓展开来。

转载于:https://www.cnblogs.com/ITybfh/archive/2011/11/10/2244621.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值