C#委托和事件

  • C#委托和事件已关闭评论
  • 135 次浏览
  • A+
所属分类:.NET技术
摘要

如图,我觉得看到这张图就能搞懂事件了。winform新建一个窗体Form1,它的里面新建一个名为myButton的按钮:


1.委托

两大作用:
(1)将方法当作参数传递
(2)方法的一种多态(多播委托)
一个弊端:
委托可以使用=,+=,-=来发布订阅,所以这里有一个弊端,它可以使用“=”将所有已经订阅的取消,只保留=后的这一个订阅。这样如果让多个类中写的委托轻易就能被修改,让程序变得不安全,所以为了解决这个弊端,事件event应运而生。
多说几句,委托和event的关系就类似于字段与属性的关系,我们都知道为了保护字段不被修改,所以使用属性的get和set去访问该字段而不是直接去给字段赋值。所以同理,event也只能通过add和remove访问器来访问委托,即+=,-=。所以我们可以说事件是委托的包装器。

2.事件

C#委托和事件

如图,我觉得看到这张图就能搞懂事件了。

winform新建一个窗体Form1,它的里面新建一个名为myButton的按钮:

● 事件的拥有者:myButton对象。
● 事件:myButton.Click。
● 事件的响应者:窗体本身。
● 事件处理器:this.myButton_Click方法。

当你新建了一个事件时,这个事件就依此类比。

 

参考《深入浅出WPF》  彻底弄懂C#中delegate、event、EventHandler、Action、Func的使用和区别