C# 事件和委托的区别

这里在类中定义了一个委托和一个事件

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 的赋值是不能在类的外部中实现的,外面只能使用+=或-=

总结:事件就是安全版本的委托,防止外部代码随意更改事件的订阅者。

你可能感兴趣的:(C#,c#)