zoukankan      html  css  js  c++  java
  • 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.当不知道方法具体实现什么时使用委托,如:事件中使用委托
  • 相关阅读:
    前端常见跨域解决方案
    前端必须要懂的浏览器缓存机制
    判断一个变量是数组还是对象
    javascript中Array常用方法
    Javascript数据类型
    Email接收验证码,以实现登录/注册/修改密码
    web安全之机器学习入门——3.2 决策树与随机森林
    web安全之机器学习入门——3.1 KNN/k近邻
    web安全之机器学习入门——2.机器学习概述
    cmd下的一些小技巧
  • 原文地址:https://www.cnblogs.com/yplong/p/3233634.html
Copyright © 2011-2022 走看看