asp.net 委托用法
using System; namespace WeiTuo { public delegate void MakeGreeting(string name); class Program { public static void EnglishGreeting(string name) { Console.WriteLine("morning:"+ name); } public static void ChineseGreeting(string name) { Console.WriteLine("早上好:"+name); } public static void GreetPeople(string name, MakeGreeting makegreet) { makegreet(name); } static void Main(string[] args) { //GreetPeople("Dom",EnglishGreeting); //GreetPeople("于海涛",ChineseGreeting); //MakeGreeting delegate1, delegate2; //delegate1 = EnglishGreeting; //delegate2 = ChineseGreeting; //GreetPeople("Dom", delegate1); //GreetPeople("于海涛", delegate2); //将多个方法绑定到同一个委托 //MakeGreeting delegate1; //delegate1 = EnglishGreeting; //delegate1 += ChineseGreeting; //GreetPeople("于海涛", delegate1); //通过委托直接调用方法 //MakeGreeting delegate1; //delegate1 = EnglishGreeting; //delegate1 += ChineseGreeting; //delegate1("于海涛"); //MakeGreeting delegate1 = new MakeGreeting(EnglishGreeting); //delegate1 += ChineseGreeting; //delegate1("于海涛"); //取消对ChineseGreeting方法的绑定 //delegate1 -= ChineseGreeting; //delegate1("Dom"); } } }
public delegate void WeiTuo2(); public delegate void WeiTuo3(string str); class Program { static void Main(string[] args) { WeiTuo2 weituo = new WeiTuo2(ShuChu); weituo.Invoke(); WeiTuo3 wt = new WeiTuo3(ShuChu); wt.Invoke("带参数"); Console.ReadLine(); } static void ShuChu(string str) { Console.WriteLine(str); } static void ShuChu() { Console.WriteLine("无参数"); } }
说的比较直白点,委托其实就是将方法作为方法的参数。