語言

OpCodes.Leave 欄位

定義

離開受保護的程式碼區域,無條件將控制權轉移到特定目標指令。

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)組合格式,並附有簡短參考摘要:

Format 組裝格式 Description
DD <int32> 離開 target 離開一個受保護的程式碼區域。

此指令未指定堆疊轉換行為。

指令 leave 無條件將控制權轉移到特定目標指令,該目標指令以從當前指令開始起的 4 位元組有號偏移量表示。

此 leave 指令與指令 br 相似,但可用於退出 try、 filter或 catch 區塊,而一般分支指令只能在此類區塊內轉移控制權。 指令 leave 會清空評估堆疊,並確保執行適當的周圍 finally 區塊。

你不能用 leave 指令退出 finally 區塊。 為了方便異常處理程式產生程式碼,從捕捉區塊內使用 leave 指令將控制權轉移到該區塊 try 內的任何指令是有效的。

若指令有一個或多個前綴代碼,控制權只能轉移至這些前綴中的第一個。

以下 Emit 方法的超載可使用操作 leave 碼:

適用於