使用英语阅读

通过


OpCodes.Ldvirtftn 字段

定义

将指向实现与指定对象关联的特定虚方法的本机代码的非托管指针(native int 类型)推送到计算堆栈上。

C#
public static readonly System.Reflection.Emit.OpCode Ldvirtftn;

字段值

注解

下表列出了指令的十六进制和 Microsoft 中间语言 (MSIL) 程序集格式,以及简短的参考摘要:

格式 程序集格式 说明
FE 07 <T> ldvirtftn method 将指针推送到堆栈上对象的虚拟方法 method

堆栈过渡行为(按顺序排列)为:

  1. 对象引用被推送到堆栈上。

  2. 对象引用从堆栈中弹出,并查找元数据标记 method) 指定的方法 (入口点的地址。

  3. 指向 method 的指针被推送到堆栈上。

如果指令引用托管方法 (或从托管代码) 转换为非托管代码的存根,则可以使用 Calli 指令调用由指令推送到堆栈ldvirtftn的生成的非托管指针。

非托管指针使用 CLR 调用约定指向本机代码。 此方法指针不应作为回调例程传递给非托管本机代码。

以下 Emit 方法重载可以使用 ldvirtftn opcode:

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0