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

比较一下:

 

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

 

 

实名委托:

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

 

posted on 2009-01-15 09:59  jarod99  阅读(6537)  评论(1编辑  收藏  举报