委托与事件的区别

事件是一种特殊的委托的实例,或者说是受限制的委托,是委托一种特殊应用,在类的外部只能施加+=,-=操作符,二者本质上是一个东西。

我们知道委托和事件都可以用来调用跟自己方法签名一样的方法。容易混淆大家的地方大多在于这两者之间的区别。从我们使用委托delegate和事件event上的主要有两大区别(如表1所示)

event只允许用add, remove方法来操作,这导致了它不允许在类的外部被直接触发,只能在类的内部适合的时机触发 

事件的作用

  • 封装订阅: 事件将委托的订阅操作进行封装,仅允许 += 和 -= 操作,避免程序员在开发时因误用 = 使得委托链断裂
  • 封装发布: 事件确保只有包含它类才能触发事件通知,杜绝在委托中出现的“订阅者”也能触发

 

 

 class ClassC

    {

           public  delegate void Say();

           public static event Say Say_EventHandler;

           private int myVar;//这个字段,只是纯粹用来用用Say_EventHandler用的,没有别的用处。

 

           public int MyProperty

           {

               get {return myVar;}

               set {

                   myVar = value;

                   if(Say_EventHandler!=null)

                   {

                       Say_EventHandler();

                   }

               }

           }

    }

参考:

https://blog.csdn.net/boiled_water123/article/details/83021161

https://blog.csdn.net/lrfleroy/article/details/88780590?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.edu_weight


版权声明:本文为sinat_31608641原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。