什么是多播委托?就是按顺序执行多个方法?举个例子:假如你有一个苹果、一个梨、一个橘子,在没有多播委托的时候你只能吃一个苹果 !有多播委托之后你就能在吃完苹果 在吃梨 在吃橘子。
下面通过代码在亲自体验下把:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public delegate void DelFunction(string name);//注意:委托所指向的函数必须跟委托具有相同签名 //(签名:参数和返回值 class Program { static void Main(string[] args) { DelFunction del = ChineseSay; del("张三");//多播委托 del("李四"); del += English; Console.ReadKey(); } //中文打招呼 public static void ChineseSay(string name) { Console.Write("早上好" + name); } //英语打招呼 public static void English(string name) { Console.Write("Hello" + name); } } |
运用 lambda表达式,多播委托 综合比较一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public delegate void DelFunction(string name);//注意:委托所指向的函数必须跟委托具有相同签名 //(签名:参数和返回值 class Program { static void Main(string[] args) { //DelFunction del = delegate(string name) { Console.WriteLine("你好啊" + name); };//用匿名函数 DelFunction del =(string name)=>{Console.WriteLine("你好啊"+name);}; del("张三");//多播委托 del("李四"); //del += delegate(string name) { Console.WriteLine("Hellow" + name); }; del += (string name) => { Console.WriteLine("Hellow" + name); }; Console.ReadKey(); } } |