OpCodes.Leave 字段
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
退出受保护的代码区域,无条件将控制转移到特定目标指令。
public: static initonly System::Reflection::Emit::OpCode Leave;
public static readonly System.Reflection.Emit.OpCode Leave;
staticval mutable Leave : System.Reflection.Emit.OpCode
Public Shared ReadOnly Leave As OpCode
字段值
注解
下表列出了指令的十六进制和 Microsoft 中间语言 (MSIL) 程序集格式,以及简短的参考摘要:
| 格式 | 程序集格式 | 说明 |
|---|---|---|
Dd <int32> |
离开 target |
退出代码的受保护区域。 |
没有为此指令指定堆栈转换行为。
指令 leave 无条件地将控制权转移到特定目标指令,表示为从当前指令后面的指令开头的 4 字节有符号偏移量。
指令 leave 类似于 br 指令,但它可用于退出 try、 filter或 catch 块,而普通分支指令只能在此类块中使用,以转移其中的控制。 指令 leave 清空计算堆栈并确保执行相应的周围 finally 块。
不能使用 leave 指令退出 finally 块。 为了简化异常处理程序的代码生成,从 catch 块内使用 leave 指令将控制权转移到关联 try 块中的任何指令是有效的。
如果指令具有一个或多个前缀代码,则控制权只能转移到这些前缀中的第一个。
以下 Emit 方法重载可以使用 leave 操作码: