事件
事件的本质
事件让委托的使用更具有安全性
事件是一种特殊的变量类型
//申明语法:
//访问修饰符 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;
事件可以防止外部随意置空委托,防止外部随意调用委托

浙公网安备 33010602011771号