zoukankan      html  css  js  c++  java
  • C#委托的好处

    C#委托的好处

    先来看一个例子:

    某人有三子,让他们各自带一样东西出门,并带回一头猎物。

    可以理解为一种父亲对儿子的委托: 猎物  办法(工具 某工具) 三个人执行委托的方法各不相同

    兔子 打猎(工具 弓)

    野鸡 买(工具 钱)

    狼 诱捕(工具 陷阱)

    什么是委托?

    委托是一个类型,用来指称所有形式相同的方法(返回值类型相同而且参数也相同)。

    public delegate double Handler(double[] ds);

    public double Sum(double[] ds) {//在方法中执行操作。}

    public double Average(double[] ds) {//在方法中执行操作。}

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

    例: 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.当不知道方法具体实现什么时使用委托,如:事件中使用委托

  • 相关阅读:
    Java入门3.2---线程池
    Java入门3.1---多线程
    打开ppt报"powerpoint无法加载mathtype加载项"错误
    LATEX排版总结
    casbin 权限系统
    Go netpoll I/O 多路复用构建原生网络模型之源码深度解析
    使用winsw包装服务将nginx包装为Windows服务
    Node.js 的模块系统
    一文读懂 babel7 的配置文件加载逻辑
    vue-cli是什么?和 webpack是什么关系?
  • 原文地址:https://www.cnblogs.com/yyzyou/p/3173344.html
Copyright © 2011-2022 走看看