源代码:
(1)调用方 InvokeClass.cs
/*** *委托的调用方(包括定义委托) * * 分四个步骤: * 1.定义委托 * 2.声明委托 (声明委托的实例) * 3.注册 * 4.调用 * * 注意:先注册,后调用 * * * */using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace chapter20委托与事件案列回顾{ //定义委托,委托定义以Handler结尾,微软的定义方式,委托也相当于一个类,定义在类的外面 public delegate void InformInfoHandler(string name); public class InvokeClass { //声明事件,事件是委托的一个实例 public static event InformInfoHandler eveInfo; /// <summary> /// 方法调用,即触发事件 /// </summary> public void DisplayInfo() { if (eveInfo != null) //说明委托已经注册方法了 { //eveInfo("我是前台小张"); eveInfo.Invoke("我是前台小张"); } } }
}
(2)注册方 Register.cs
/*** *注册方:方法注册 * * */using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace chapter20委托与事件案列回顾{ public class RegisterClass { public RegisterClass() { //可以注册实例方法 InvokeClass.eveInfo += InformZhangsan; InvokeClass.eveInfo += InformLisi; //也可以注册静态方法 InvokeClass.eveInfo += InformWangwu; } public void InformZhangsan(string name) { Console.WriteLine("{0},张三, 注意, 老板来了", name); } public void InformLisi(string name) { Console.WriteLine("{0},李四, 注意, 老板来了", name); } public static void InformWangwu(string name) { Console.WriteLine("{0},王五, 注意, 老板来了", name); } }
}
(3)测试 Program.cs
/*** *测试 * * * */using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace chapter20委托与事件案列回顾{ class Program { static void Main(string[] args) { //运行事件的注册 new RegisterClass(); //运行调用方 InvokeClass obj = new InvokeClass(); obj.DisplayInfo(); } }}
