事件其实也是委托,是委托的安全版本
学事件前必须先学会委托,可以看下面链接博主的另一篇文章
事件的使用
1.创建委托
2.创建事件(封装一个事件类,封装事件的定义和事件调用执行的条件,看下文注意事项)
3.事件绑定方法
4.执行事件
实例(代码可以复制直接运行):
{
static void main(string[] args)
{
EventInvoke ei = new EventInvoke();//创建事件类对象
EventFunction ef = new EventFunction();//创建目标方法类对象
ei.StudentEvent += ef.Eat;//4.绑定目标方法
ei.StudentEvent += ef.Sleep;//4.绑定目标方法
ei.Invoke();//调用事件,执行绑定的两个目标方法
}
//1.定义委托
delegate void StudentDG();
//定义事件类(包含事件定义和启动)
class EventInvoke
{
public event StudentDG StudentEvent;//2.定义事件
//3.写调用事件方法,判断事件纯在才调用事件
public void Invoke()
{
StudentEvent?.Invoke();
}
}
//目标方法类
class EventFunction
{
public void Eat(){
Console.WriteLine("吃");
}
public void Sleep(){
Console.WriteLine("睡");
}
}
}
注意事项
-
事件必须声明在类或结构体中。
-
定义事件和调用事件必须放在同一个类中,在定义事件的类的外部不能调用事件,所以一般把调用事件封装到一个方法里。
-
事件的定义和调用不在同一个类中不能用=来操作事件,只能用+=。
感觉有帮助的可以点个关注,欢迎交流,共同进步