OpCodes.Ret 字段

定义

从当前方法返回,将返回值(如果存在)从被调用方的计算堆栈推送到调用方的计算堆栈。

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. 从被调用方评估堆栈弹出返回值。

  2. 在步骤 1 中获取的返回值被推送到调用方评估堆栈上。

如果被调用方评估堆栈上不存在返回值,则不返回任何值(调用方或调用方方法没有堆栈转换行为)。

当前方法的返回值的类型(如果有)确定要从堆栈顶部提取的值的类型,并复制到调用当前方法的方法的堆栈中。 当前方法的计算堆栈必须为空,但要返回的值除外。

ret指令不能用于将控制权从、tryfiltercatchfinally块转移出去。 try在或catch内部,将Leave指令与位于所有封闭异常块之外的指令的目标ret一起使用。 由于 filterfinally 块在逻辑上是异常处理的一部分,而不是嵌入其代码的方法,因此正确生成的Microsoft中间语言 (MSIL) 指令不会在 filterfinally 内执行方法返回。

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

适用于