其实说实话 event和delegate 并没有什么特别大的区别,event其实就是特殊化的delegate

1.调用上event只能+=和-=,这样做的意义是为了防止,其余的方法覆盖,但是delegate并没有这种限制,不仅可以+=,-=,还可以直接=一个方法。

2.委托定义的是一个类型,而事件定义的是一个成员

3.event 只能在类内定义,或者接口内定义,而delegate可以在类外类外定义,但不能在接口内,因为接口中只能包含成员

4.event能在接口中定义意味着,我们可以通过接口来获得event,这对于没有引用关系的两个项目来说是十分合适的

委托使用例子(类A订阅类B):

namespace WindowsFormsApplication1
{
public delegate void SumDelegate(); //定义一个委托类型的SumDelegate public class A
{ public A()
{
B b = new B();
b.sum += method;
} public void method()
{
MessageBox.Show("我被调用了");
}
} public class B
{
public SumDelegate sum; //定义一个委托方法sum
public void ShowMsg()
{
sum();
}
}
}
05-17 03:56