Поделиться через


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 

Значение поля

Комментарии

В следующей таблице приведен шестнадцатеричный формат инструкции и формат сборки MSIL, а также краткая справочная сводка:

Формат Формат сборки Описание
DD <int32> Оставить target Завершает защищенную область кода.

Для этой инструкции не указано поведение перехода стека.

Инструкция leave безоговорочно передает управление конкретной целевой инструкции, представленной в виде 4-байтового смещения со знаком от начала инструкции после текущей инструкции.

Инструкция аналогична leave инструкцииbr, но ее можно использовать для выхода из tryблока , или catch , filterв то время как обычные инструкции ветви можно использовать только в таком блоке для передачи управления внутри него. Инструкция leave очищает стек вычислений и гарантирует выполнение соответствующих окружающих finally блоков.

Вы не можете использовать инструкцию leave для выхода из finally блока. Чтобы упростить создание кода для обработчиков исключений, в блоке catch допустимо использовать leave инструкцию для передачи управления любой инструкции в связанном try блоке.

Если инструкция содержит один или несколько кодов префикса, элемент управления можно передать только первому из этих префиксов.

Emit Следующие перегрузки методов могут использовать leave код операции:

Применяется к