知识点01:什么是事件
事件是基于委托的存在,事件是委托的安全包裹,事件使得委托变得更具有安全性
完整的事件具有以下五要素:
事件模型
事件拥有者(对象,类)
事件成员——能让对象或类具备通知能力的成员,不会主动发动
事件的响应者——对象
事件处理器——加入到事件中的方法
事件订阅——把事件处理器与事件关联在一起,本事上是委托订阅
知识点02:事件的使用
基本语法: 访问修饰符 event 委托类型 时间名
事件的使用:1.事件是作为成员变量存在与类中的
2.委托怎么使用,事件就怎么使用
注:事件只能作为成员在类和接口以及结构体中,可同步调用也可异步调用
static void Main(string[] args)
{
Test t = new Test();
t.myEvent += t.TestFun;//可在类的外部进行赋值
//t.myEvent();错误的,无法在类的外部进行调用
t.Event_Invoke();//只能通过类内部封装的方法进行在外部调用
}
class Test
{
public Action myfun;
public event Action myEvent;//委托对应的事件
public void TestFun()
{
Console.WriteLine("Test类里的TestFun方法");
}
public void Event_Invoke()
{
myEvent += TestFun;//向事件中添加函数
myEvent.Invoke();//在类内部进行事件调用
}
}
知识点03:委托与事件的区别
1.事件不可以在类外部赋值,但可以在外部添加和移除方法,委托则都可以
2.事件不可以外部调用,若要调用必须在类的内部封装一个方法,然后在外部调用,委托可以直接在外部调用
3.事件不能像委托一样作为临时变量在函数中使用