OpCodes.Mkrefany 字段

定义

将对特定类型实例的类型化引用推送到计算堆栈上。

public static readonly System.Reflection.Emit.OpCode Mkrefany;

字段值

注解

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

格式 程序集格式 说明
C6 <T> mkrefany class 将 类型的类型 class 化引用推送到堆栈上。

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

  1. 指向数据片段的指针将推送到堆栈上。

  2. 指针弹出并转换为 类型的 class类型化引用。

  3. 类型化引用将推送到堆栈上。

指令 mkrefany 支持传递动态类型化的引用。 指针的类型必须为 &*native int,并保存一段数据的有效地址。 Class 是描述指针引用的数据类型的类标记。 Mkrefany 在堆栈上推送类型化引用,提供指针和类型的 class不透明描述符。

类型化引用允许的唯一有效操作是将其传递给需要类型化引用作为参数的方法。 然后,被调用方可以使用 RefanytypeRefanyval 指令分别检索类型 (类) 和地址。

TypeLoadException 如果 class 找不到 ,则引发 。 当 Microsoft 中间语言 (MSIL) 指令转换为本机代码而不是在运行时时,通常会检测到此情况。

以下 Emit 方法重载可以使用 mkrefany 操作码:

适用于

产品 版本
.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