委托和事件的一点总结

  委托和事件使用的步骤:

1、  定义委托 在发布类中(如果没有自定义EventArgs,那么就不需要定义;如果自定义了EventArgs类,也就是需要用到自己的事件数据,分为2种情况:第一种是不适用泛型类就需要定义委托了,如果是使用泛型类那么就不需要自定义委托了,例如直接是EventHandler<CustomerEventArgs> handler = 事件)。

2、定义事件在发布类中:public event CustomerEventHandler  propertyChangedEvent; CustomerEventHandler是 自定义的委托名

3、定义事件动作 在订阅者类中:必须和委托的类型要一致,访问修饰符、返回值类型、参数类型都必须一样,实现某种功能。

4、将事件和事件动作关联在一起,给事件添加方法,使用+=或者-=,这个必须在第5步之前运行。例如:propertyChanged += s.customerHandler;

5、将事件赋给委托 :CutstomerEventHandler handler = propertyChanged;

6、触发事件:就是在某一动作之后该事件发生了,在发生时就需要由委托去执行所关联的事件动作,直接由委托的对象去调用方法。例如:handler(this, e);和委托的类型一样。
           

 protected virtual void onRaiseCustomer(CustomEventArgs e,Subscriber s)
        {
            propertyChanged += s.customerHandler;
            CutstomerEventHandler handler = propertyChanged;
           
            if (handler != null)
            {
                handler(this, e);
            }
        }

 

事件像是委托的封装一样,本来是直接将方法赋给委托,但是会造成一定的不安全,现在是先将方法添加给事件,添加时其实委托是在后面使用add和remove方法添加和移除方法,这个好比是属性和字段的关系,没有危险了再赋给委托,最后由委托去调用这些方法,一个个实现,那么这个事件也就实现了。

 

事件在其他地方的应用还没有了解。


Question1:事件完成之后,事件中用到的数据在外面取不到吗?

Question2:接口中为何没有事件与事件处理器的关联?

先写这么多,还要补充

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值