总览
序号 | 区别 | 委托 | 事件 |
---|---|---|---|
1 | 赋值方式 | =或+= | += |
2 | 调用范围 | 类内+类外 | 类内 |
3 | 是否为类型 | 是 | 否 |
具体分析
1.委托可以把一个方法作为参数代入另一个方法。 委托可以理解为函数指针。
2.委托和事件没有可比性,因为委托是类型,事件是对象,委托实例才是对象。
3.其实事件是委托实例的特殊情况,加了event(事件)修饰之后,委托就被阉割了,假设这个加了修饰符的事件称为事件1,事件只能注册与注销,不可在类外调用。
委托实例与事件区别
委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区别。
事件的内部是用委托实现的。因为对于事件来讲,外部只能“注册自己+=、注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。
事件是用来阉割委托实例的,类比用一个自定义类阉割List。事件只能add、remove自己,不能赋值。事件只能+=、-=,不能= 。事件内部就是一个private的委托和add、remove两个方法。
总结
从面向对象来说,从设计角度来看委托与事件:类内使用委托,类之间使用事件,保证类的封装