事件
1、发布者和订阅者
有时我们程序中当一个特定的程序事件发生时,程序的部分可以得到该事件已经发生的通知,
这时候发布者和订阅者模式就能满足我们的需求
- 发布者: 发布某个事件的类或结构
- 订阅者: 在事件发生时得到通知的类或结构
例如:CSDN博主发布一篇文章,关注订阅他的粉丝立马就能收到博主发布文章的通知
2、声明事件
- 事件的声明在一个类中
- 它需要委托类型的名称
- 不能创建它的对象
- 关键字:event
- 事件是成员
3、触发事件
delegate void Handler(); //声明委托
class Incrementer //发布者
{
public event Handler CountedADozen; //创建事件发布者
public void DoCount()
{
for(int i = 1; i < 100; i++)
{
if(i % 10 == 0)
CountedADozen(); //每计数10次触发一次事件
}
}
}
class Dozens
{
public int DozensCount { get; private set;}
public Dozens(Incrementer incrementer)
{
DozensCount = 0;
incrementer.CountedADozen += IncrementerCountedADozen; //订阅事件
}
public void IncrementerCountedADozen() //声明事件处理程序
{
DozensCount++;
}
}
class Program
{
static void Main()
{
Incrementer incrementer = new Incrementer();
Dozens dozens = new Dozens(incrementer);
incrementer.DoCount();
Console.WriteLine(dozens.DozensCount);
}
}
输出结果
10