基礎版自訂事件 (無自訂參數)
class Dog
{
public delegate void AlarmEventHandler(object sender, EventArgs e);
public event AlarmEventHandler Alarm;
public void OnAlarm()
{
if (this.Alarm != null)
{
Console.WriteLine("\n狗報警: 有小偷進來了,汪汪~~~~~~~");
this.Alarm(this, new EventArgs());
}
}
}
class Host
{
void HostHandleAlarm(object sender, EventArgs e)
{
Console.WriteLine("主人: 抓住了小偷!");
}
public Host(Dog dog)
{
dog.Alarm += new Dog.AlarmEventHandler(HostHandleAlarm);
}
}
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
Host host = new Host(dog);
DateTime now = new DateTime(2008, 12, 31, 23, 59, 50);
DateTime midnight = new DateTime(2009, 1, 1, 0, 0, 0);
Console.WriteLine("時間一秒一秒地流逝...");
while (now < midnight)
{
Console.WriteLine("當前時間: " + now.ToString("HH:mm:ss"));
System.Threading.Thread.Sleep(1000);
now = now.AddSeconds(1);
}
dog.OnAlarm();
Console.ReadLine();
}
}
與進階版差異
- 使用內建
EventArgs,無額外資料傳遞。
- 處理器無法得知小偷數量,僅能固定回應。
- 適合簡單通知場景;需攜帶資料時請使用自訂
EventArgs (見第 4 部)。