联系:事件是一种特殊的委托,均类似于C中的函数指针,将一个方法通过参数传到别的方法中,通过别的方法来调用。
区别:体现在封装性。事件是订阅发布的机制。
委托可以在类的外部直接赋值,直接调用。即可以使用:
A a = new A();
B b = new B();
a.委托名 = b.方法名; // 赋值
a.委托名(); // 调用
事件不可以在类的外部直接赋值,且不可以直接调用。只可以使用:
class A{
触发方法(){
事件名();
}
}
A a = new A();
B b = new B();
a.事件名 += b.方法名; // 这里只能用+=,不能用=,相当于是对a发布的事件的订阅,而不是修改a的事件。
a.触发方法();
// 不可以使用 a.事件名(); 即事件只能是A的内部发起的