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");
編程之余,多多思考,多多學習,有助於開發智商啊