c#委托

 刚开始学代码的时候,从来没有想过怎么去优化代码,觉得能实现功能就可以了。工作了几年,还是这样的一个想法,后来慢慢系统去学习,发现很你想更上一层楼,你必须要有一些设计模式去编写代码。今天学到的委托算是一种设计思想吧!

委托:委托是代替对象调用其方法,是一种类型,类。

委托的作用:逻辑解耦。

例子(百度看见的一个例子):A喜欢B,想对B表白,但是怂,不敢去,所以拜托C去跟B表白。

c#委托

 

       堆代码时刻到了:

namespace ConsoleApplication1
{

    public class Users
    {
       public  delegate void Entrustmethod();  //委托


       public void Get0()
       {
           Console.WriteLine("Get0");
       }
       public void Get01() {
           Console.WriteLine("Get01");
       }
       public void Get02() {
           Console.WriteLine("Get02");
       }

       public int Get()
       {
           return 1;
       }
       public int Get1()
       {
           return 1;
       }
       public int Get2()
       {
           return 2;
       }
       public int Get3(string name)
       {
           return 3;
       }

       public string Get4(string  name)
       {
           return "4";
       }
       public void Get5(string name)
       {
           Console.WriteLine("Get5");
       }
   

    }

        static void Main(string[] args)
        {

            ConsoleApplication1.Users.Entrustmethod methods = new ConsoleApplication1.Users.Entrustmethod(new Users().Get0);
            methods.Invoke();
        }

运行结果:c#委托

 

 注:上述的Dome是无参数无返回值的委托。

c#委托

 

 运行结果:c#委托

 

 注:委托的调用要与方法的参数,返回值一致。

多播委托:任何委托都是多播委托的子类。多播委托通过+=去增加方法,形成方法链,依次往下执行

                通过-=去移除方法,形成方法链,从下往上依次执行,从第一个进行匹配,直到完全匹配成功才移除方法,如果匹配不成功,也毫无影   响。

  堆代码的时刻:c#委托

 

 运行结果c#委托

 

 后来随着.netFromworke升级 委托出现框架预定义 Action 和Fun

   Action:无返回值的委托。系统默认给16个参数。

    Fun:有返回值的委托。系统默认给16个参数。

堆代码:

          c#委托

 

 运行结果:c#委托

 

c#委托

上一篇:Apache的POI常用api


下一篇:配置中心将配置写入spring环境