OpCodes.Castclass 字段

定义

尝试将引用传递的对象转换为指定的类。

public static readonly System.Reflection.Emit.OpCode Castclass;
[System.Runtime.InteropServices.ComVisible(true)]
public static readonly System.Reflection.Emit.OpCode Castclass;

字段值

属性

注解

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

格式 程序集格式 说明
74 <T> castclass class 将 对象强制转换为 类型的 class新对象。

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

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

  2. 对象引用从堆栈中弹出;被引用的 对象被强制转换为指定的 class

  3. 如果成功,则会将新的对象引用推送到堆栈上。

指令 castclass 尝试将对象引用 (类型 O) 堆栈上强制转换为指定的类。 新类由指示所需类的元数据标记指定。 如果堆栈顶部的 对象的类未实现新类 (假定新类是接口) 并且不是新类的派生类,则会 InvalidCastException 引发 。 如果对象引用为 null 引用, castclass 则 成功并将新对象作为 null 引用返回。

InvalidCastException 如果 obj 无法强制转换为类,则引发 。

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

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

适用于

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