• 委托理解


    委托在本质上是一个类,我们用delegate关键字声明的所有委托都继承自System.MulticastDelegate。后者又继承自System.Delegate类,System.Delegate类则继承自System.Object。委托既然是一个类,那么它可以被定义在任何地方,既可以定义在类的内部,也可以定义在类的外部。

    正如很多资料上所说的,委托是一种类型安全的函数回调机制,它不仅能够调用实例方法,也能调用静态方法,并且具备按顺序执行多个方法的能力。

    由于委托继承自System.MulticastDelegate类,自然也继承MulticastDelegate类的字段、属性和方法。这些成员中,最重要的当属三个非公共字段。如下所示:

    字段名称 字段类型 描叙

    _target  System.Object 该字段指明委托所调用的方法所在的实例类型。如果委托调用的为静态方法,该字段为null;如果为实例方法则为该方法所在的对象。

    _methodPtr System.InPtr 标识回调方法的指针

    _invocationList System.Object 在创建委托链时指向一个委托数组,在委托刚刚构建时通常为null

    编译器自动为委托创建了BeginInvoke,Invoke和EndInvoke三个方法。

    当我们在像用普通的方法一样调用委托时,这时实际上调用的是编译器自动生成的Invoke方法。

  • 相关阅读:
    AutoResetEvent 2
    AutoResetEvent
    c++ 控制台输入参数
    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped
    filezilla管理网站服务器
    matlab
    WCF:无法满足对安全令牌的请求,因为身份验证失败。
    WCF 学习
    dev
    dotnetbar
  • 原文地址:https://www.cnblogs.com/hongjiumu/p/2700479.html
Copyright © 2020-2023  润新知