OpCodes.Castclass 字段
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
尝试将引用传递的对象转换为指定的类。
public: static initonly System::Reflection::Emit::OpCode Castclass;
public static readonly System.Reflection.Emit.OpCode Castclass;
[System.Runtime.InteropServices.ComVisible(true)]
public static readonly System.Reflection.Emit.OpCode Castclass;
staticval mutable Castclass : System.Reflection.Emit.OpCode
[<System.Runtime.InteropServices.ComVisible(true)>]
staticval mutable Castclass : System.Reflection.Emit.OpCode
Public Shared ReadOnly Castclass As OpCode
字段值
- 属性
注解
下表列出了指令的十六进制和 Microsoft 中间语言 (MSIL) 程序集格式,以及简短的参考摘要:
格式 | 程序集格式 | 说明 |
---|---|---|
74 <T > |
castclass class |
将 对象强制转换为 类型的 class 新对象。 |
堆栈过渡行为(按顺序排列)是:
对象引用被推送到堆栈上。
对象引用从堆栈中弹出;被引用的 对象被强制转换为指定的
class
。如果成功,则会将新的对象引用推送到堆栈上。
指令 castclass
尝试将对象引用 (类型 O
) 堆栈上强制转换为指定的类。 新类由指示所需类的元数据标记指定。 如果堆栈顶部的 对象的类未实现新类 (假定新类是接口) 并且不是新类的派生类,则会 InvalidCastException 引发 。 如果对象引用为 null 引用, castclass
则 成功并将新对象作为 null 引用返回。
InvalidCastException 如果 obj 无法强制转换为类,则引发 。
TypeLoadException 如果找不到类,则引发 。 当 Microsoft 中间语言 (MSIL) 指令转换为本机代码而不是在运行时时,通常会检测到此情况。
以下 Emit 方法重载可以使用 castclass
操作码: