1、发布者和订阅者
通知某件事情发生的,就是发布者。
对某件事情关注的,就是订阅者。
2、事件触发和注册
事件发生时,会通知所有关注该事件的订阅者。
想在事件发生时被通知,必须注册以表示关注。
3、用程序语言解释
事件发生时,通知订阅者,就是调用订阅者的注册函数。注册,就是告诉发布者调用那个注册函数。
4、事件声明
delegate void Handler();
public event Handler NewDog;//Handler是委托类型,NewDog是事件名
NewDog是一个成员,并且会被隐式自动初始化为null。
5、事件订阅
NewDog+=方法;//订阅事件
NewDog-=方法;//取消订阅事件
6、事件触发
if (NewDog != null)
{
NewDog();
}
实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Event_test
{
public class Dog
{
public delegate void Handler();
public static event Handler NewDog; //须是静态的事件
static int num;
static Dog()
{
num = 0;
}
public Dog(string Name)
{
++num;
if (NewDog != null)//当有订阅者订阅了事件时
{
NewDog();//通知订阅者
}
}
}
class Client
{
public void WantADog()
{
Console.WriteLine("I want to see the new dog!");
}
}
class Program
{
static void Main(string[] args)
{
Client c1=new Client();//订阅者
Client c2=new Client();//订阅者
Dog.NewDog += c1.WantADog;//注册,调用订阅者的方法
Dog.NewDog += c2.WantADog;//注册,调用订阅者的方法
Dog dog = new Dog("Q");//当添加了新狗狗时,通知订阅者
}
}
}