一、事件的概念
1. 事件是基于委托的存在,是委托的安全包裹,让委托的使用更具有安全性
2. 事件是一种特殊的变量类型
二、事件的使用
1. 语法:event 委托类型 事件名;
2. 使用:
(1)事件是作为成员变量存在与类中
(2)委托怎么用,事件就怎么用
3. 事件与委托的区别:事件不能在类外部赋值和调用
4. 只能作为成员变量存在与类和接口以及结构体中
5. 代码:
using System;namespace Event
{class Program{static void Main(string[] args){Test test = new Test();// 委托可以在外部赋值test.action = fun;test.action += fun;test.action -= fun;// 事件不能在外部赋值// test.myEvent = fun(); 编译报错:事件不能在外部赋值test.myEvent += fun; // 但是可以添加、移除函数test.myEvent -= fun;// 委托可以在外部调用test.action.Invoke();// 事件不能在外部调用// test.myEvent.Invoke(); 编译报错:事件不能在外部调用test.doEvent(); // 但是可以在内部封装调用}static void fun(){Console.WriteLine("调用fun()");}}class Test{// 创建委托成员变量,用于存储函数public Action action;// 创建事件成员变量,用于存储函数public event Action myEvent;public void doEvent(){Console.WriteLine("调用doEvent()");if(myEvent != null)myEvent.Invoke();}}
}
运行结果如下:
三、事件的作用
1. 防止外部随意置空委托
2. 防止外部随意调用委托
3. 事件相当于对委托进行了一次封装,使其更加安全