事件

事件的本质

事件让委托的使用更具有安全性

事件是一种特殊的变量类型


//申明语法:
//访问修饰符 event 委托类型 事件名;
//事件的使用:
//事件是作为成员变量存在于类中
//委托怎么使用,事件就怎么使用
//事件相对于委托的区别:
//事件不能再类外部赋值
//事件不能在类外部调用
//事件只能作为成员存在于类和结构以及结构体中
class Test
{
    //委托成员变量
    public Action myFun;
    //事件成员变量
    public event Action myEvent;
    public Test()
    {
        //在类的内部,事件和委托的使用一模一样
        myFun = TestFun;
        myEvent = TestFun;
    }
    public void TestFun()
    {
        Console.WriteLine("123")
    }
    public void DoEvent()
    {
        if(myEvent != null)
        {
            myEvent();
        }
    }
}
Test t = new Test();
//委托可以类的外部赋值,事件不行
t.MyFun = null;
t.Myfun = TestFun;
//虽然不能直接赋值,但是可以增加或移除函数
t.myEvent += TestFun;
t.myEvent -= TestFun;
//委托可以在外部调用,但是事件不行
t.myFun();
t.myFun.Invoke();
//事件只能通过类的内部封装一个方法去调用
t.DoEvent();
//委托可以在类外部申明临时变量,事件不行
Action a = TestFun;

事件可以防止外部随意置空委托,防止外部随意调用委托

posted @   cannedmint  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示