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

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

相关推荐

  1. C# 事件委托区别

    2023-12-15 05:46:07       42 阅读
  2. C#委托事件

    2023-12-15 05:46:07       9 阅读
  3. 深入理解 C# Unity 中事件委托

    2023-12-15 05:46:07       14 阅读
  4. C# 一种基于 event 委托事件机制

    2023-12-15 05:46:07       13 阅读
  5. c#事件委托代码demo

    2023-12-15 05:46:07       18 阅读
  6. C# 委托/事件/lambda

    2023-12-15 05:46:07       40 阅读
  7. C#委托事件

    2023-12-15 05:46:07       15 阅读
  8. C# 委托事件

    2023-12-15 05:46:07       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 05:46:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 05:46:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 05:46:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 05:46:07       18 阅读

热门阅读

  1. 恒创科技:高防服务器软防和硬防的区别

    2023-12-15 05:46:07       38 阅读
  2. 使用pyinstaller将python代码打包成exe文件

    2023-12-15 05:46:07       48 阅读
  3. ReactHooks大全—useState

    2023-12-15 05:46:07       48 阅读
  4. ES常见查询总结

    2023-12-15 05:46:07       34 阅读
  5. 如何使用EXCEL制作一份高效、美观的成绩单

    2023-12-15 05:46:07       39 阅读
  6. MySQL和Minio数据备份

    2023-12-15 05:46:07       39 阅读
  7. REST与RPC = 面向对象和函数编程

    2023-12-15 05:46:07       38 阅读
  8. Vue3 逻辑复用 - 组合式函数

    2023-12-15 05:46:07       38 阅读