c#中的委托和事件

话说这两概念真的太基础了,但是困扰我蛮久了,说来真是丢人。

不知道大家是不是有一种既生瑜何生亮的感觉,有委托了,为啥还要事件。

其实很简单,就两点:

1、委托添加第一个的时候要用=,之后才可以使用+=,一致性不好,事件都可以用+=

2、为了封装性。委托在类中,如果想让别人使用必然要设置成public,那么对象外面的人也可以随时使用这个委托变量,这样不好,因为这个委托一般都是希望对象内部使用的,用于调用外部类对象的函数,就是c++中注册函数指针的作用。所以呢,事件就用来解决这个问题,虽然事件也是定义成public,外部可以往这个事件上注册函数,但是外部不能执行这个事件,就是说其实他是private的,只有类内部可以调用注册在事件上的函数。

就这两点原因,是不是一下觉得太容易理解了

原文地址:https://www.cnblogs.com/haodafeng/p/15582458.html