委托的构造函数和成员函数在哪里定义?

2023-12-04

当我在看的时候ActionReflector 中的委托,我看到它有一个像这样的构造函数

public Action(object @object, IntPtr method);

但我找不到任何机构以及其他成员职能,例如Invoke, BeginInvoke等等。我只能看到它的定义。这些函数是在哪里定义的?它们是在 .net BCL 之外定义的吗?


基本上,委托是由 CLR 专门处理的。编译器提供签名,但 CLR 知道如何处理它们。

第 8.9.3 条ECMA-335分区我谈到这个:

委托是面向对象的函数指针的等价物。与函数指针不同,委托是 面向对象、类型安全且可靠。委托是通过定义派生自基类型的类来创建的 System.Delegate(请参阅分区 IV)。每个委托类型应提供一个名为 Invoke 的方法,并带有适当的 参数,并且委托的每个实例都会将对其 Invoke 方法的调用转发给一个或多个兼容的 特定对象的静态或实例方法。它委托的对象和方法是在以下情况下选择的: 委托实例已创建。

除了实例构造函数和 Invoke 方法之外,委托还可以选择另外两个 方法:BeginInvoke 和 EndInvoke。这些用于异步调用。

虽然在大多数情况下,委托似乎只是另一种用户定义的类,但它们紧密相连 受控。这些方法的实现由 VES 提供,而不是用户代码。唯一额外的 可以在委托类型上定义的成员是静态方法或实例方法。

(VES 是虚拟执行系统;CLR 是 Microsoft 对 VES 的实现。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

委托的构造函数和成员函数在哪里定义? 的相关文章

随机推荐

  • 卡在比较器

    这是我的第一篇文章 这是针对 Java 7 的 有人可以告诉我为什么我无法访问 CompareIpaddress 类中的 first a 吗 我不知道为什么 SOF 不允许我发布这个 除非我输入更多的东西 这足够填充吗 谢谢 戈登 impo
  • 访问各种缓存和主内存的大致成本?

    谁能给我访问 L1 L2 和 L3 缓存以及 Intel i7 处理器上主内存的大致时间 以纳秒为单位 虽然这不是一个具体的编程问题 但了解这些类型的速度细节对于一些低延迟编程挑战是必要的 每个人都应该知道的数字 0 5 ns CPU L1
  • MySQL:如何将 varchar(255) UNIQUE 列更改为 UNIQUE Text NOT NULL?

    当前列是 VARCHAR 255 NOT NULL 那么如何将其更改为 TEXT NOT NULL 注意 要更改其属性类型的列是另一列的 UNIQUE KEY 组合 例如 唯一密钥 名称 描述 列描述当前采用 varchar 255 无法更
  • 如何使用 bash 替换 json 中的文本

    我正在尝试更换质量测试服务 by 测试服务在 JSON 文件中使用 bash 有人可以帮我吗 谢谢 JSON 文件 variables json variable qa test services default prod test 1 p
  • 使用 svlib 从 SystemVerilog 中的字符串中提取正则表达式匹配

    我是THE的新用户svlibSystemVerilog 环境中的封装 参考Verilab svlib 我有以下示例文本 PARAMATER lollg 1 SPEC ID 1G3HSB 1 我想使用正则表达式来提取1G3HSB从这段文字 我
  • 在 R 中使用 osmplotr 和 OpenStreetmap 绘制海域

    我正在尝试使用 Openstreetmap 通过osmplotrCRAN 上的软件包 绘制海岸线并将大海涂成蓝色 因为大海不是多边形 所以我尝试使用osm line2poly 将线条变成多边形 然而 下面的最小可重现示例给出了以下错误 Er
  • 使用 hbase 处理图像、视频和音频类型

    任何人都知道如何使用 Hbase 处理音频 视频和图像等非结构化数据 我尝试了很多 但没有任何想法 请提供任何帮助 选项1 将图像转换为字节数组 您可以准备放置请求并插入到表中 同样也可以实现音频和视频文件 See https docs o
  • C语言中的对象

    即使我浏览了一些 C 语言教程 笔记 我还是遇到了 对象 这个术语 我一直想知道对象与过程语言有什么关系 深入一点我可以理解 占用一块内存的东西在c中被称为 对象 我的问题是我的理解是否正确或者是否有我遗漏的东西 谢谢 来自C99标准草案
  • 如何存储/检索 RSA 公钥/私钥

    我想使用RSA公钥加密 存储或检索私钥和公钥的最佳方法是什么 XML 在这里是个好主意吗 如何获得钥匙 RSAParameters privateKey RSA ExportParameters true RSAParameters pub
  • ExpressJS:每 24 小时运行一次函数

    在 ExpressJS 中每 24 小时运行一次自动化函数的最简单方法是什么 除了运行无限循环之外 我到处寻找解决方案 原则上这是唯一的方法吗 你需要使用节点 cron npm var cron require node cron cron
  • 为什么 Ruby `**` 运算符的优先级高于一元 `-` ?

    这会导致这样的情况 1 0 5 gt 1 只有括号可以解决这个问题 1 0 5 gt 6 123031769111886e 17 1 0i 这比预期的要差1 i 但基本可以接受 在我去抱怨 Ruby bug 之前 我想知道是否有某种原因造成
  • 有没有办法提高FlyingSaucer的性能?

    我已经关注了本文使用 FlyingSaucer 将 XHTML 转换为 PDF 这很出色 但有一个重大缺点 速度慢得离谱 我发现从 XHTML 渲染 PDF 需要 1 到 2 分钟 无论该页面多么简单 基本代码 import java io
  • VBscript 代码捕获标准输出,而不显示控制台窗口

    这是一个 VBScript 代码示例 展示了如何捕获命令行程序发送到标准输出的任何内容 它执行命令xcopy 并在消息框中显示输出 在消息框出现之前 您会看到控制台窗口突然弹出 Set objShell WScript CreateObje
  • 使用指针了解数组的大小

    我如何使用使用 malloc 分配的指针知道数组的大小 include
  • Java:从字节数组中删除连续的零段

    例如 假设我想从数组中删除所有长度超过 3 个字节的连续 0 段 byte a 1 2 3 0 1 2 3 0 0 0 0 4 byte r magic a System out println r result 1 2 3 0 1 2 3
  • .NET 最好的音频压缩库是什么?

    我正在寻找一个好的 NET 音频压缩库 任何使用 MP3 的东西都已经过时了 因为许可问题 基本上我只需要能够将常规 WAV 音频数据压缩为某种格式 然后解压缩回 WAV 最好代码全部是 NET C 或 VB NET 但我认为这不太可能 它
  • 用于从 Google 表单获取平均分数和电子邮件的 Google 脚本(如测验)

    我需要一个 Google 脚本 GAS 来从已转换为测验的 Google 表单中检索电子邮件和总分 在GAS中你可以得到每个问题的分数 但我需要得到所有问题的分数 然后平均得出最终分数 每个测验有20个问题 我还需要每个完成测验的人的电子邮
  • R - ggplot 轴数字格式 - 删除前导零

    从 R ggplot geom bar 轴删除前导零的选项 代码是什么 即 我希望 0 05 显示为 0 05 我能找到的只是内置格式 如百分比 逗号等 thx 作为受 m evans 给出的答案启发的简单替代方案 可以使用以下方法轻松实现
  • 使用 Dataview.RowFilter 从 SomeTable 中选择 TOP 5 *?

    我需要从缓存的 Dataview 对象中选择最近的 5 行 有什么方法可以做到这一点吗 我已经尝试过 但索引器数据列是空的 public static DataView getLatestFourActive DataTable produ
  • 委托的构造函数和成员函数在哪里定义?

    当我在看的时候ActionReflector 中的委托 我看到它有一个像这样的构造函数 public Action object object IntPtr method 但我找不到任何机构以及其他成员职能 例如Invoke BeginIn