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