OpCodes.Isinst 字段

定义

测试对象引用(O 类型)是否为特定类的实例。

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

字段值

注解

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

格式 程序集格式 说明
75 <T> isinst class 测试对象引用是否为 的 class实例,返回 null 引用或该类或接口的实例。

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

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

  2. 对象引用从堆栈中弹出并经过测试,以查看它是否是传入 class的类的实例。

  3. 结果 (对象引用或 null 引用) 推送到堆栈上。

Class 是指示所需类的元数据标记。 如果堆栈顶部对象的类实现 (如果 class 是接口) ,则为 (的派生类class(如果 class 是常规类) 则将其强制转换为类型class,并将结果推送到堆栈上,就像调用时一样Castclassclass 否则,在堆栈上推送 null 引用。 如果对象引用本身是空引用,则 isinst 同样返回 null 引用。

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

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

适用于

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