zoukankan      html  css  js  c++  java
  • 第十一讲 深入“委托和事件”

    *委托的定义
    委托是一种引用方法的类型。一量为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其

    他任何方法一样,具有参数和返回值。

    *委托与C++函数指针区别
    一个delegate object 一次可以搭载多个方法,而不是一次一个。当我们唤起一个搭载了多个方法的delegate,所有方

    法以其“被搭载到delegate object 的顺序”被依次唤起

    一个delegate object 所搭载的方法并不需要属于同一个类。一个delegate object 所搭载的所有方法必须具有相同的

    原型和形式。然而,这些方法可以既有static也有non-static,可以由一个或多个不同类的成员组成。

    一个delegate type的声明在本质上是创建了一个新的subtype instance,该subtype派生自.NET library framework 的

    abstract base classes Delegate或MulticasDelegate,它们提供了一组public methods用以询访delegate object或其

    搭载的方法。

    *委托喻晖的理解
    委托是函数的封装,它代表一“类”函数。它们都符合一定的签名:拥有相同的参数列表、返回值类型。同时,委托也

    可以看成是函数的抽象,是函数的“类”。此时,委托的实例将代表一个具体的函数。
    *为什么要使用委托?
    更加灵活的方法调用。
    用于异步回调。
    多线程编程中使用委托来指定启动一个线程时调用的方法。
    C#中的事件模型。用它们指明处理给定事件的方法。

    *委托应用--异步回调
    异步回调:由于实例化委托是一个对象,所以可以将其作为参数进行传递,也可以将其赋值给属性。这样,方法便可以

    将一个委托作为参数来接受,并且以后可以调用该委托。这称为异步回调,是在较长的进程完成后用来通知调用方的常

    用方法。以这种方式使用委托时,使用委托的代码无需了解有关所有方法的实现方面的任何信息。

    *何时委托?何时接口?
    在以下情况中使用委托:
    当使用事件设计模式时。
    当封装静态方法可取时。
    当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
    需要方便的组合。
    当类可能需要该方法的多个实现时。
    在以下情况中使用接口:
    当存在一组可能被调用的相关方法时。
    当类只需要方法的单个实现时。
    当使用接口的类想要将该接口强制转换为其他接口或类类型时。

    *多播委托
    多播委托--引用多个方法的委托,它连续调用每个方法。委托必须是同类型的,返回类型必须是void,不能带输出参数(可以带引用参数)。多播委托应用于事件模型中。


     

  • 相关阅读:
    Python语法入门01
    计算机基础入门
    小白初入Python人工智能
    python编译器的安装和pycharm的安装
    一个简单的例子,让你理解依赖注入
    分分钟教会大家第一个Spring入门案例
    白牌交换机:理想,现状与未来
    2017下一代数据中心网络研究报告
    pica8公司和picOS
    OCP(open compute project)
  • 原文地址:https://www.cnblogs.com/iceberg2008/p/1406497.html
Copyright © 2011-2022 走看看