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,不能带参数(可以带引用参数),多播委托应用与事件模型中。

    委托是一类方法,委托实例将指向特定的方法。
  • 相关阅读:
    ffmpeg rtmp推流 视频转码
    java日志发展史 log4j slf4j log4j2 jul jcl 日志和各种桥接包的关系
    nginx stream 流转发,可以转发rtmp、mysql访问流,转发rtmp、jdbc请求
    java web http 转https 通过nginx代理访问
    linux 服务器磁盘挂载
    novnc 通过websockify代理 配置多点访问
    linux 文件服务 minio 安装部署配置
    AOP实现原理,手写aop
    java 泛型
    JAVA反射getGenericSuperclass()用法
  • 原文地址:https://www.cnblogs.com/VirtualMJ/p/677102.html
Copyright © 2011-2022 走看看