C#学习系列之事件
- 前言
- 事件
- 发布者和订阅者
- 事件触发和注册
- 事件声明
- 事件订阅
- 事件触发
- 使用
- 总结
前言
基础学习。
事件
发布者和订阅者
发布者:通知某件事情发生的。
订阅者:对某件事情关注的。
事件触发和注册
触发:事件发生就通知所有关注该事件的订阅者。
注册:想要得到通知,必须注册并关注。
事件发生时,通知订阅者,调用订阅者的注册函数。
事件声明
delegate void Handler();
public event Handler NewDog;//NewDog是一个成员,会被隐式自动初始化为null
//这里的Handler为委托类型,NewDog为事件名
//这里常会出现问题,应该注意!!!
事件订阅
NewDog+=方法
NewDog-=方法
//方法可以是实例方法、静态方法、匿名方法、lambda表达式
事件触发
封装的受限制的委托。
if(NewDog!=null)
{NewDog();}
使用
public class Dog:Pet
{static int Num;public delegate void Handler();public static event Handler NewDog;static Dog(){Num=0;}public Dog(string name):base(name){++Num;if(NewDog!=null){NewDog();}}
}
class Client
{public void WantADog(){Console.WriteLine("xx");}
}Client c1=new Client();
Client c2=new Client();
Dog.NewDog+=c1.WantADog;//相当于把Client的方法赋给事件了
Dog.NewDog+=c2.WantADog;
Dog dog=new Dog("Q");//最后事件打印出来会显示xx
总结
学习记录。
https://www.imooc.com/video/14246/0