• 委托


    委托声明

    可以声名在类的外面 ,也可以是在类的内部

    委托跟方法很像:也有返回值,有参数,用一个delegate关键字修饰;可以在类的内部声明,可以在类的外部声明
    委托可以实例化 ,在实例化的时候需要传递一个方法进来
    把方法当做参数的
    在实例化的时候要求传递的方法结构和委托一直 :要求参数 和返回值一致
     1  public delegate void NoRunturnNoParameter();//没有返回值  没有形参
     2         public delegate void NoRunturn(int x, int y);//没有返回值 有形参
     3         public delegate int RunturnNoParameter();//没有返回值 没有形参
     4         public delegate int Runturn(int x, int y);//没有返回值 有形参
     5         public void show()
     6         {
     7             //委托可以实例化,在实例化的时候需要传递一个方法进来
     8             NoRunturnNoParameter norunturn = new NoRunturnNoParameter(NoRunturnMethod);
     9             norunturn.Invoke();//执行这个委托,== NoRunTurnMethod();
    10             // 在实例化的时候要求传递的方法结构和委托一直 :要求参数 和返回值一直
    11             NoRunturn noRunturn = new NoRunturn(NoRunturnMethod);
    12             noRunturn.Invoke(1, 2);
    13             
    14             RunturnNoParameter runturnNoParameter = new RunturnNoParameter(RunturnIntMethod);
    15             int ruslt1 = runturnNoParameter.Invoke();
    16             
    17             Runturn runturn = new Runturn(RunturnIntParameterMethod);
    18             int ruslt2 = runturn.Invoke(1, 2);
    19         }
    20         public void NoRunturnMethod()
    21         {
    22             Console.WriteLine("这是一个无参数无返回值的方法!");
    23         }
    24         public void NoRunturnMethod(int x, int y)
    25         {
    26             Console.WriteLine("这是一个有参数无返回值的方法!");
    27         }
    28         public int RunturnIntMethod()
    29         {
    30             Console.WriteLine("这是一个有返回值 没有形参的方法");
    31             return 1;
    32         }
    33         public int RunturnIntParameterMethod(int x, int y)
    34         {
    35             Console.WriteLine("这是一个有返回值 有形参的方法");
    36             return x;
    37         }
    View Code

    委托的实质 是什么

    委托是一个类,继承了MulticastDeleGate特殊类

    通过委托传递业务逻辑以后

    1. 增加公共业务逻辑方便,只需要一个方法内部增加即可,去掉了重复代码

    2. 如果新增业务逻辑 那么逻辑由调用者提供,做到了逻辑解耦

    3. 行为型设计模式,

    委托究竟怎么使用?

    一、如果在工作中遇到代码耦合很严重:逻辑和逻辑之间应该分开,但是放在同一个方法内部的;
    二、如果代码中有很多重复代码

    委托的花式应用

    使用中间件的思想 -俄罗斯套娃(暂时不上传代码)

  • 相关阅读:
    codeforces234C
    codeforces340D
    Codeforces Round #259 (Div. 2) 解题报告
    memset 赋值
    codeforces2B
    codeforces431C
    Node.js权威指南 (10)
    归档普通对象Demo示例程序源代码
    联系人数据存储Demo源代码
    1211笔记关于//modal//更改窗口的根控制器//数据存取//Plist属性列表//-“沙盒机制”//plis属性列表//偏好设置//归档普通对象//联系人数据存储//协议与回调函数
  • 原文地址:https://www.cnblogs.com/netCat/p/14981075.html
Copyright © 2020-2023  润新知