C#中的事件代理

  今天看WEB引用的时候翻到了C#语法那一部分,本以为自己都学过,可是在类成员这一章看到了事件代理这个名词,抱着以不知为耻的心态我迅速学习了一下。

创建事件代理,并且参数需要使用自己写的OilEventArgs

public delegate void OilEventHandler(Object sender,OilEventArgs e);

后我创建了一个事件参数

public class OilEventArgs : System.EventArgs
{
    private int _oilMass;
    public int OilMass
    {
        get
        {
            return _oilMass;
        }
    }
    public OilEventArgs(int oilMass)
    {
        _oilMass = oilMass;
    }
}

和一个汽车类

public class Car
{
    private int _oilMass = 0; //油量
    public event OilEventHandler OnOilWarning; //定义时间成员,事件名称为OnOilwarning
    //给汽车加油
    public void FillOill(int oilMass)
    {
        _oilMass = oilMass;
    }
    //启动汽车
    public void Startup()
    {
        if (_oilMass < 10)
        {
            OnOilWarning(this, new OilEventArgs(_oilMass));
        }
    }
}
从这个类中我看出 在Startup方法中 当汽油 _oilMass的值小于 10 的时候便会触发这个事件

然后我窗体应用程序中加入一个按钮充当启动汽车,并添加代码如下

private void button1_Click(object sender, EventArgs e)
        {
            Car car = new Car();
            car.OnOilWarning += new OilEventHandler(OilWarning);//关联事件
            car.FillOill(5);
            car.Startup();
        }
        public void OilWarning(object sender, OilEventArgs e)
        {
            MessageBox.Show("检测到了汽油不足,当前油量为:"+ e.OilMass);
        }

可以看到在代表加入汽油的FillOill事件参数为5

说明汽车汽油不足,在运行是后应该通过时间代理触发了OilWarning下的提示框。


有一点不懂的是为什么在Startup 中被触发的是OnOilwarning可是为什么

OilWarning(object sender, OilEventArgs e)

这个方法会被执行呢?

把书上代码看完了可是还是感觉有些不懂,谁能帮帮忙?


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值