示例代码(来自C#图解):
using System;
namespace Testevent001
{
delegate void Handler();
class Incrementer
{
public event Handler CountedADozen;
public void DoCount()
{
for (int i = 1; i < 100; i++)
if (i % 12 == 0 && CountedADozen != null)
CountedADozen();
}
}
class Dozens
{
public int DozensCount { get; private set; }
public Dozens(Incrementer incrementer)
{
DozensCount = 0;
incrementer.CountedADozen += IncrementerDozensCount;
}
void IncrementerDozensCount()
{
DozensCount++;
Console.WriteLine("Number of dozens = {0}", this.DozensCount);
}
}
class Program
{
static void Main(string[] args)
{
Incrementer incrementer = new Incrementer();
Dozens dozensCounter = new Dozens(incrementer);
incrementer.DoCount();
Console.WriteLine("Number of dozens = {0}", dozensCounter.DozensCount);
}
}
}
有一个人A在看报纸,一页页翻过去,这个时候B伸过头来说:
Rua,帮我看看最近撸串的新闻,听说最近小吃街联合半价,不能错过啊;
那么,A询问,需要怎么做呢?
B表示你看到撸串相关的新闻就吼一声”高蛋白大法好”就行了
于是有
发布者A
public event Handler 搞事
public void 看报纸
{
翻页
if 发现有撸串相关的新闻
搞事
}
订阅者B
{
public 搞新闻(订阅者 A)
{
A.搞事 += B.尬呼 //由B告诉A事情触发时需要做什么
}
void 尬呼()
{
吼一声"高蛋白大法好"
}
}
操作
{
打东边来一个A
打西边来一个B
A看报纸
做出对A行为的反馈
}
}