感觉匿名委托使用起来更简洁一点,不用在定义一个专用的委托函数来传递方法,也更可以更好的理解委托。
比较一下:
Code
#region 匿名委托
//定义委托
delegate string lookMe(string s);
protected void LinkButton1_Click(object sender, EventArgs e)
{
//匿名委托
lookMe lm = delegate(string name) { return "亲爱的 " + name + ",请看着我的眼睛!"; };
//匿名委托调用
string name1 = "jarod";
Label1.Text = lm(name1);
}
#endregion
#region 匿名委托
//定义委托
delegate string lookMe(string s);
protected void LinkButton1_Click(object sender, EventArgs e)
{
//匿名委托
lookMe lm = delegate(string name) { return "亲爱的 " + name + ",请看着我的眼睛!"; };
//匿名委托调用
string name1 = "jarod";
Label1.Text = lm(name1);
}
#endregion
实名委托:
Code
#region 委托的应用
//委托的定义
public delegate string deleRate(string year);
//三个方法的定义,以供委托调用
public string year_2009(string s)
{ Response.Write("2009" + s); return "2009" + s; }
//三个方法的定义,以供委托调用
public string year_2008(string s)
{ Response.Write("2008" + s); return "2008" + s; }
//三个方法的定义,以供委托调用
public string year_2007(string s)
{ Response.Write("2007" + s); return "2007" + s; }
protected void Button1_Click(object sender, EventArgs e)
{
deleRate dr = new deleRate(year_2009);
dr += year_2008;
dr += year_2007;
//直接用委托实例调用方法
Label1.Text = dr("年");
//使用委托实现方法调用方法
Label1.Text = getYear(dr, "年");
//使用委托实现方法调用方法,方法名作为参数
Label1.Text = getYear(year_2008, "年");
}
//执行委托的过程,把参数 year2 传入实际执行的方法中去
public static string getYear(deleRate dr, string year2)
{ return dr(year2); }
#endregion
#region 委托的应用
//委托的定义
public delegate string deleRate(string year);
//三个方法的定义,以供委托调用
public string year_2009(string s)
{ Response.Write("2009" + s); return "2009" + s; }
//三个方法的定义,以供委托调用
public string year_2008(string s)
{ Response.Write("2008" + s); return "2008" + s; }
//三个方法的定义,以供委托调用
public string year_2007(string s)
{ Response.Write("2007" + s); return "2007" + s; }
protected void Button1_Click(object sender, EventArgs e)
{
deleRate dr = new deleRate(year_2009);
dr += year_2008;
dr += year_2007;
//直接用委托实例调用方法
Label1.Text = dr("年");
//使用委托实现方法调用方法
Label1.Text = getYear(dr, "年");
//使用委托实现方法调用方法,方法名作为参数
Label1.Text = getYear(year_2008, "年");
}
//执行委托的过程,把参数 year2 传入实际执行的方法中去
public static string getYear(deleRate dr, string year2)
{ return dr(year2); }
#endregion