为什么要使用委托

2020-05-18  本文已影响0人  sttone

同类型的方法,当方法拓展后,我们再调用它。
不使用委托,我们在调用方法的时候要通过传参数判断调用相应的方法,每次新增方法,我们也就要拓展方法类型,当方法拓展得越来越多,拓展的方法类型也就会越来越多
使用委托,我们可以在调用方法的时候直接把新增的方法名当参数进行调用即可,不需要进行方法类型的拓展

不使用委托

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Webtest01
{
    public partial class 事件委托 : System.Web.UI.Page
    {
       
        protected void Page_Load(object sender, EventArgs e)
        {
                Response.Write(SayHello("张三", 2));
        }

        //不使用委托
        public string SayHello(string uname,int type)
        {
            string retval = "";
            switch (type)
            {
                case 1: 
                    retval= ChinaSayHello(uname);
                    break;
                case 2: 
                    retval= EnglishSayHello(uname);
                    break;
                case 3: 
                    retval=JapaneseHello(uname);
                    break;
            }
            return retval;
        }

        public string ChinaSayHello(string uname)
        {
            return uname+":你好!";
        }
        public string EnglishSayHello(string uname)
        {
            return uname+":Hello!";
        }
        public string JapaneseHello(string uname)
        {
            return uname+":寇尼酒哇!" ;
        }
    }
}

使用委托

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Webtest01
{
    public partial class 事件委托 : System.Web.UI.Page
    {
        public delegate string SayHelloDelegate(string uname);
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(SayHello("张三", JapaneseHello));
        }

        //使用委托
        public string SayHello(string uname, SayHelloDelegate d)
        {
            return d(uname);
        }

        public string ChinaSayHello(string uname)
        {
            return uname+":你好!";
        }
        public string EnglishSayHello(string uname)
        {
            return uname+":Hello!";
        }
        public string JapaneseHello(string uname)
        {
            return uname+":寇尼酒哇!" ;
        }

    }
}
上一篇 下一篇

猜你喜欢

热点阅读