这里在类中定义了一个委托和一个事件
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 的赋值是不能在类的外部中实现的,外面只能使用+=或-=
总结:事件就是安全版本的委托,防止外部代码随意更改事件的订阅者。