OpCodes.Leave 字段

定义

退出受保护的代码区域,无条件将控制转移到特定目标指令。

public static readonly System.Reflection.Emit.OpCode Leave;

字段值

注解

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

格式 程序集格式 说明
Dd <int32> 离开 target 退出代码的受保护区域。

没有为此指令指定堆栈转换行为。

指令 leave 无条件地将控制权转移到特定目标指令,表示为从当前指令后面的指令开头的 4 字节有符号偏移量。

指令 leave 类似于 br 指令,但它可用于退出 tryfiltercatch 块,而普通分支指令只能在此类块中使用,以转移其中的控制。 指令 leave 清空计算堆栈并确保执行相应的周围 finally 块。

不能使用 leave 指令退出 finally 块。 为了简化异常处理程序的代码生成,从 catch 块内使用 leave 指令将控制权转移到关联 try 块中的任何指令是有效的。

如果指令具有一个或多个前缀代码,则控制权只能转移到这些前缀中的第一个。

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

适用于

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