OpCodes.Ret 字段
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从当前方法返回,将返回值(如果存在)从被调用方的计算堆栈推送到调用方的计算堆栈。
public: static initonly System::Reflection::Emit::OpCode Ret;
public static readonly System.Reflection.Emit.OpCode Ret;
staticval mutable Ret : System.Reflection.Emit.OpCode
Public Shared ReadOnly Ret As OpCode
字段值
注解
下表列出了指令的十六进制和Microsoft中间语言(MSIL)程序集格式,以及简短的参考摘要:
| Format | 程序集格式 | Description |
|---|---|---|
| 2A | Ret | 从方法返回,可能返回值。 |
堆栈过渡行为按顺序排列,为:
从被调用方评估堆栈弹出返回值。
在步骤 1 中获取的返回值被推送到调用方评估堆栈上。
如果被调用方评估堆栈上不存在返回值,则不返回任何值(调用方或调用方方法没有堆栈转换行为)。
当前方法的返回值的类型(如果有)确定要从堆栈顶部提取的值的类型,并复制到调用当前方法的方法的堆栈中。 当前方法的计算堆栈必须为空,但要返回的值除外。
该ret指令不能用于将控制权从、tryfiltercatch或finally块转移出去。
try在或catch内部,将Leave指令与位于所有封闭异常块之外的指令的目标ret一起使用。 由于 filter 和 finally 块在逻辑上是异常处理的一部分,而不是嵌入其代码的方法,因此正确生成的Microsoft中间语言 (MSIL) 指令不会在 filter 或 finally 内执行方法返回。
以下 Emit 方法重载可以使用 ret 操作码: