C#事件,如何理解事件,如何定义和使用限制等

今天写一篇简单的文章,就是关于C#事件。

说简单,其实要理解也不容易。我记得我好些年都没真正搞明白事件和委托。所以,我想,尽管大家都知道事件和委托,但真正能搞明白的,可能还真不一定都能。

一、事件的表现

事件会出现在哪里,我们每个人都清楚的。以Winform为例,各种按钮点击,就是事件的一种。它的代码形式很简单、很熟悉:

 

比如上图,是一个窗体的初始化加载时发生的事件。

二、事件的声明

事件必须指定一个委托,以及事件参数。

委托都是基于EventHandler基类,事件参数都是基于EventArgs基类。

 

 

然后我们可以声明如下 :

public event EventHandler CookingEvent;


三、事件的属性访问器

 

 

通常,我们不需要使用事件的属性访问器,但是一些特殊情况下,我们可能会用到。它的作用是让别人可以订阅事件。事件的属性访问器,你可以把它当成普通的属性get和set来理解。

四、如何订阅或者取消事件

只需要简单使用(+=)或者(-=),即可订阅或者取消事件,代码类似如下:

 

Family family = new Family();
family.OnCooking += Family_OnCooking;

五、事件的使用限制

事件只能在当前声明的类中使用,所以,它的子类,也就是所有的继承类,都无法使用到它。这需要通过编码解决,具体如何解决,我后面会再写一篇文章说说。问题也就是子类中如何使用父类定义的事件?

它为什么会只能在声明的类中使用?原因其实是事件是一种特殊类型的委托。

六、接口能不能定义事件?

答案是可以的。

但会有另一个问题,我们知道,一个类,只能有一个父类,但是它却可以有N个接口。如果这个N个接口,都定义了事件,而且这些接口中的事件名称都完全一样,那么要怎么办呢?

这个问题后面再写文章说吧。

本文就只说接口中可以定义事件吧。

 

祝您用餐愉快。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值