【总结】委托和匿名委托的比较

感觉匿名委托使用起来更简洁一点,不用在定义一个专用的委托函数来传递方法,也更可以更好的理解委托。

一、匿名委托

 1    #region 匿名委托
 2 
 3     //定义委托
 4     delegate string lookMe(string s);
 5 
 6     protected void LinkButton1_Click(object sender, EventArgs e)
 7     {
 8         //匿名委托
 9         lookMe lm = delegate(string name) { return "亲爱的 " + name + ",请看着我的眼睛!"; };
10 
11         //匿名委托调用
12         string name1 = "jarod";
13         Label1.Text = lm(name1);
14     }
15 
16     #endregion

二、实名委托

 1  #region 委托的应用
 2 
 3     //委托的定义
 4     public delegate string  deleRate(string year);
 5 
 6     //三个方法的定义,以供委托调用
 7     public string year_2009(string s)
 8     { Response.Write("2009" + s); return "2009" + s; }
 9 
10     //三个方法的定义,以供委托调用
11     public string year_2008(string s)
12     { Response.Write("2008" + s); return "2008" + s; }
13 
14     //三个方法的定义,以供委托调用
15     public string year_2007(string s)
16     { Response.Write("2007" + s); return "2007" + s; }
17 
18     protected void Button1_Click(object sender, EventArgs e)
19     {
20         deleRate dr = new deleRate(year_2009);
21         dr += year_2008;
22         dr += year_2007;
23 
24         //直接用委托实例调用方法
25         Label1.Text = dr("");
26 
27         //使用委托实现方法调用方法
28         Label1.Text = getYear(dr, "");
29 
30         //使用委托实现方法调用方法,方法名作为参数
31         Label1.Text = getYear(year_2008, "");
32     }
33 
34     //执行委托的过程,把参数 year2 传入实际执行的方法中去
35     public static string getYear(deleRate dr, string year2)
36     { return dr(year2); }
37 
38     #endregion

转:https://www.cnblogs.com/jarod99/archive/2009/01/15/1376086.html

原文地址:https://www.cnblogs.com/zhangguorenmi/p/13034969.html