C#中的事件與委托,對於我們寫業務代碼的程序員來說不常用,這就會導致經常忘記,這邊再溫習一下。
//委托
public delegate void MyEventDelegateHandler(string msg);
//發布者
public class MyService
{
public event MyEventDelegateHandler hanldes;
public void Send(string msg)//發布者的發布方法
{
Console.WriteLine("發布者發布信息:" + msg);
if (hanldes != null)
hanldes(msg);//轉給訂閱者
}
}
//訂閱者
public class MyClient
{
public void Receive(string msg)
{
Console.WriteLine("訂閱者接收到信息:" + msg);
}
}
調用方法
MyService service = new MyService();
MyClient client = new MyClient();
service.hanldes += new MyEventDelegateHandler(client.Receive);//添加事件
service.hanldes -= client.Receive;//刪除事件
service.hanldes+=new MyEventDelegateHandler(client.Receive);
service.hanldes += (string msg) => Console.WriteLine("匿名接收者接收到信息:" + msg);
service.Send("消息是SBSBSB");
Console.WriteLine();
//C#中定義好的委托 還有Func(帶返回值的)
Action<string> action = new Action<string>(client.Receive);
action("huage");
action = (string msg) => client.Receive(msg);
action("huage");
編程之余,多多思考,多多學習,有助於開發智商啊
