c#事件学习
事件概念事件是基于委托的存在事件是委托的安全包裹让委托的使用更具有安全性事件 是一种特殊的变量类型事件的使用申明语法访问修饰符 event 委托类型 事件名;事件的使用1.事件是作为 成员变量存在于类中2.委托怎么用 事件就怎么用事件相对于委托的区别:1.不能在类外部 赋值2.不能再类外部 调用注意它只能作为成员存在于类和接口以及结构体中class Test { //委托成员变量 用于存储 函数的 public Action myFun; //事件成员变量 用于存储 函数的 public event Action myEvent; public Test() { //事件的使用和委托 一模一样 只是有些 细微的区别 myFun TestFun; myFun TestFun; myFun - TestFun; myFun(); myFun.Invoke(); myFun null; myEvent TestFun; myEvent TestFun; myEvent - TestFun; myEvent(); myEvent.Invoke(); myEvent null; } public void DoEvent() { if(myEvent ! null) { myEvent(); } } public void TestFun() { Console.WriteLine(123); } }委托和事件的区别1.事件不能再外部使用赋值符号只能使用 - 委托 哪里都能用2.事件 不能再外部执行 委托哪里都能执行3.事件 不能作为 函数中的临时变量的 委托可以Test t new Test(); //委托可以在外部赋值 t.myFun null; t.myFun TestFun; t.myFun t.myFun TestFun; t.myFun TestFun; //事件是不能再外部赋值的 //t.myEvent null; //t.myEvent TestFun; //虽然不能直接赋值 但是可以 加减 去添加移除记录的函数 t.myEvent TestFun; t.myEvent - TestFun; //委托是可以在外部调用的 t.myFun(); t.myFun.Invoke(); //事件不能再外部调用 //t.myEvent(); //只能在类的内部去封装 调用 t.DoEvent(); Action a TestFun; //事件 是不能作为临时变量在函数中使用的 //event Action ae TestFun; } static void TestFun() { }为什么有事件防止外部随意置空委托2.防止外部随意调用委托3.事件相当于对委托进行了一次封装 让其更加安全