• C#委托


    1 double[] weights={1.0,2.0,3.0,4.0};
    2 double result=handler(weights); 

    先来看一个例子:
    某人有三子,让他们各自带一样东西出门,并带回一头猎物。
    可以理解为一种父亲对儿子的委托:
    猎物  办法(工具 某工具)
    三个人执行委托的方法各不相同
    兔子 打猎(工具 弓)
    野鸡 买(工具 钱)
    狼 诱捕(工具 陷阱)
    什么是委托?
    委托是一个类型,用来指称所有形式相同的方法(返回值类型相同而且参数也相同)。

    1 public delegate double Handler(double[] ds);
    2 public double Sum(double[] ds) {//在方法中执行操作。}
    3 public double Average(double[] ds) {//在方法中执行操作。}

    委托的实例化
    用new关键字(将方法名作为参数)生成一个委托对象,建立委托与方法的关联。
    例:

    1 Handler handler = new Handler(Sum);

    可以像使用变量一样使用委托的实例。使用委托时,需要给委托按要求传递参数。
    使用委托,则委托所关联的方法被调用。
    例:

    double[] weights={1.0,2.0,3.0,4.0};
    double result=handler(weights); 

    一个委托可以通过+运算委托关联多个方法,叫多路广播委托(对应于单路广播委托)。
    如果此时使用委托,则所有的关联方法都被调用。
    例:

    Handler handler = new Handler(Sum);
    handler += new Handler(Average);
     
    补充:
    说白了,委托就是第三方,调用者告诉第三方要做什么,然后调用者就不用管了 这个委托(第三方)就会去调用方法去帮你实现
    委托的好处:
    1.相当于用方法作为另一方法参数(类似于C的函数指针)
    2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托
    3.当不知道方法具体实现什么时使用委托,如:事件中使用委托
  • 相关阅读:
    前台线程与后台线程的区别
    触发器
    Asp.net AutopostBack 属性
    Spring实战拆书--SpringBean
    侣行APP
    用android去写一个小程序
    java如何使用JUnit进行单元测试
    JDK的安装与配置以及eclipse的使用
    软件工程第一次作业(1)
    软件工程第一次作业(2)
  • 原文地址:https://www.cnblogs.com/yplong/p/3233634.html
Copyright © 2020-2023  润新知