这里在类中定义了一个委托和一个事件
public class MyTimerClass
{// 事件public event EventHandler MyEvent;// 委托public delegate void Mydel();public Mydel mydel;public MyTimerClass(){MyEvent = MyTimerClass_MyEvent;mydel = new Mydel(MydelMethod);}private void MydelMethod(){MessageBox.Show("委托方法");}private void MyTimerClass_MyEvent(object? sender, EventArgs e){MessageBox.Show("事件方法");}public void InvokeMyEvent(){MyEvent(null, null);}
}
1、委托是类型,事件不是
2、事件只能在类的内部调用,比如这里的方法InvokeMyEvent中的MyEvent(null, null)是不能在这个类的外部使用的,类的内部就可以
3、事件=号只能在内部使用,例如:上面类中的构造方法MyEvent 的赋值是不能在类的外部中实现的,外面只能使用+=或-=
总结:事件就是安全版本的委托,防止外部代码随意更改事件的订阅者。