Key Point
Demo
using System;
namespace EventDemo
{
public class Program
{
static void Main(string[] args)
{
Friend f1 = new Friend("Alen");
Friend f2 = new Friend("Bob");
Friend f3 = new Friend("Cindy");
Program p = new Program();
p.CallEvent += new CallHandler(f1.SendMessage);//将函数封装到CallHandler,并添加到Event链中。
p.CallEvent += new CallHandler(f2.SendMessage);//Add
p.CallEvent += new CallHandler(f3.SendMessage);
p.OnCall("Any one received the message?");//此处给封装的函数所包含的参数赋值,并按照顺序执行方法。
Console.WriteLine("----------------------------------------");
p.CallEvent-= new CallHandler(f2.SendMessage);//Remove
p.OnCall("Any one received the message?");//此处给封装的函数所包含的参数赋值,并按照顺序执行方法。
Console.Read();
}
//自定义委托
public delegate void CallHandler(string msg);
public event CallHandler CallEvent;
public void OnCall(string msg)
{
CallEvent?.Invoke(msg);//当CallEvent不为空时,将delegate的parameter在此处赋值,并执行delegate所封装的函数。
}
}
public class Friend
{
public string Name;
public Friend(string name)
{
Name = name;
}
public void SendMessage(string message)
{
Console.WriteLine(message);
Console.WriteLine(this.Name + " recevied the message.");
}
}
}