• 委托和匿名委托的比较


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

    比较一下:

    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

  • 相关阅读:
    JSOI2010 满汉全席
    LNOI2014 LCA
    BZOJ3689 异或之
    Codeforces Round #553 div.2
    AHOI2013 差异
    SDOI2016 生成魔咒
    NOI2006 最大获利
    没有过的题QAQ
    NOI2014 动物园
    HDU4622 Reincarnation
  • 原文地址:https://www.cnblogs.com/jarod99/p/1376086.html
Copyright © 2020-2023  润新知