一、事件的概念
-
事件是基于委托的存在,是委托的安全包裹,让委托的使用更具有安全性
-
事件是一种特殊的变量类型
二、事件的使用
-
语法:event 委托类型 事件名;
-
使用:
(1)事件是作为成员变量存在与类中
(2)委托怎么用,事件就怎么用
-
事件与委托的区别:事件不能在类外部赋值和调用
-
只能作为成员变量存在与类和接口以及结构体中
-
代码:
cs
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();
}
}
}
运行结果如下:

三、事件的作用
-
防止外部随意置空委托
-
防止外部随意调用委托
-
事件相当于对委托进行了一次封装,使其更加安全