委托,通熟易懂的举个例子:妈妈让小新去买东西
一 首先是C#语法
public delegate void BuyThingEventHandler();
delegate是关键字
EventHandler是一个声明委托的微软C#的命名标准
二 定义小新类
/// <summary> /// 小新类 /// </summary> private class CraYon { public static void BuyThing() { Console.WriteLine("妈妈,东西买好了!"); } }
三 主方法
internal class Program { public delegate void BuyThingEventHandler(); private static void Main(string[] args) { BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing); myDelegate(); Console.ReadKey(); } }
BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing);这个是委托声明方法。
注:委托的参数和返回值类型,都要和具体委托的方法一致:
public delegate void BuyThingEventHandler();
public static void BuyThing(){
Console.WriteLine("妈妈,东西买好了!");
}
四 委托链
简单描述为,妈妈让小新去买完东西后,还让他带小白去散步。
using System; namespace test1 { internal class Program { public delegate void BuyThingEventHandler(); private static void Main(string[] args) { //委托 BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing); myDelegate += CraYon.WalkDog; myDelegate(); Console.ReadKey(); } } /// <summary> /// 小新类 /// </summary> public class CraYon { public static void BuyThing() { Console.WriteLine("妈妈,东西买好了!"); } public static void WalkDog(){ Console.WriteLine("妈妈,小狗散完步了,收集的大便给你!"); } } }
其实我们只是在程序中加了
myDelegate += CraYon.WalkDog;
这个委托就相当于做了两件事,先买东西再带小白散步。