还是看例子最直接。
代理(Delegate)例子:
delegate void MyDelegate(string str,int index); // 声明代理 class Test { public static void Show(string str, int index) // 声明方法 { Console.WriteLine("Show"+str+index.ToString()); } public static void Main(string[] args) { MyDelegate md = new MyDelegate(Show); // 1.实例化代理,传入方法 md("hello world", 22); // 2.传入参数 } }事件结合代理的完整例子:
//事件用到的代理,以般以×××Handler的格式进行命名 private delegate void CryHandler(); // 无参代理 // 玩具小鸭的类 class Duck { // 定义小鸭的唱歌事件 public event CryHandler DuckCryEvent; public Duck() { // 把小鸭唱歌的事件挂接到Cry方法上 DuckCryEvent += new CryHandler(Cry); // 注册事件,传入方法 } // 小鸭唱歌事件对应的处理方法 public void Cry() { Console.WriteLine("我是一只小鸭,呀呀呀...."); } // 小鸭被摇动 public void BeShaked() //执行方法,引发cry事件 { DuckCryEvent(); // 执行事件,传入参数 } } class MyClass { public static void Main3(string[] args) { // 买一只小鸭 Duck d = new Duck(); // 摇一摇小鸭,它就会调触发小鸭的Cry事件,小鸭就会唱歌 d.BeShaked(); } }重要参考:
http://blog.csdn.net/xiangxiang123123/article/details/8641940