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

     

    委托是一种引用方法的类型,一但为委托分配了方法,委托将与该方法具有相同的行为,委托方法的使用可以象其他方法一样,具有参数和返回值。

    一个委托 delegate object 可以搭载多个方法,而不是一次一个,当我们唤起一个搭载多个方法的委托的时候,所有的方法,将以其被“搭载到delegate object的顺序”依次被唤醒执行。

    一个委托 delegate object 所搭载的方法并不需要属于同一个类。一个委托delegate object所搭载的方法必须具有相同的原形和形式。然而这些方法可以是static 也可以是no static,可以由一个或者多个不同的类成员组成。

    一个 delegate type 的声明在本质上创建了一个新的 subtype instance,该subtype派生与.net .library frameworkabstract base class delegate 或者 multicastdelegate,他们提供一组public method 用语访问delegate object或其搭载的方法。

    自己定义:

    委托是函数的封装,它代表一类函数。他们都符合一给定的签名:拥有相同的参数,列表,返回值类型。同时委托也可以看作是对函数的抽象,是函数的类,因此,委托的实力将代表一个具体的函数。

    为什么使用委托

    1. 更加灵活的方法调用。

    2. 用于异步回调。

    3. 多线呈编程中使用委托方法来指定启动一个线呈时回调的方法。

    4. C#的事件模型。用它们指明处理给定事件的方法。

    委托的定义:<modifiers> delegate <trun_type> <delegate_name> <argument_list>

    public delegate void Del(string message);

    public void DelegateMethod(string message)

    {

                         Console.WriteLine(message);

    }

    Del handler = new Del(obj.DelegateMethod)

    Handler(“Hellow World”);

    异步回调:由于实例化委托是一个对象,所以可以将其作为参数进行传递,也可以将其赋值给属性。这样方法便可以将一个委托做为参数来接受,并且以后可以调用该委托。这样城为异步回调。是在较长的过程完成后用来通知调用方法的常用方法。以这种方式使用委托时,使用委托代码无需了解有关所用方法的实现方面的任何信息。

    多播委托

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

    委托是一类方法,委托实例将指向特定的方法。
  • 相关阅读:
    yarn 完美替代 npm
    Vue调试神器vue-devtools安装
    PHPStorm 忽略 node_modules 目录
    npm 更改为淘宝镜像的方法
    php快速获取所有的自定义常量用户常量
    我们为什么要在 PHPStorm 中标记目录
    PhpStorm 合理标注目录让索引和扫描更加地高效
    Linux sleep命令
    Shell命令行中特殊字符与其转义详解(去除特殊含义)
    shell编程—— EOF
  • 原文地址:https://www.cnblogs.com/VirtualMJ/p/677102.html
Copyright © 2011-2022 走看看