事件
事件的本质
事件让委托的使用更具有安全性
事件是一种特殊的变量类型
//申明语法:
//访问修饰符 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;
事件可以防止外部随意置空委托,防止外部随意调用委托
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!