Freigeben über


OpCodes.Leave Feld

Definition

Beendet einen geschützten Codebereich, wobei die Steuerung bedingungslos an eine bestimmte Zielanweisung übertragen wird.

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 

Feldwert

Hinweise

In der folgenden Tabelle sind das Hexadezimal- und MSIL-Assemblyformat (Microsoft Intermediate Language) der Anweisung sowie eine kurze Referenzzusammenfassung aufgeführt:

Format Assemblyformat BESCHREIBUNG
DD <int32> Verlassen target Beendet einen geschützten Codebereich.

Für diese Anweisung ist kein Stapelübergangsverhalten angegeben.

Die leave -Anweisung überträgt die Steuerung bedingungslos an die spezifische Zielanweisung, die als 4-Byte-Offset vom Anfang der Anweisung nach der aktuellen Anweisung dargestellt wird.

Die leave -Anweisung ähnelt der br -Anweisung, kann jedoch verwendet werden, um einen try- filteroder catch -Block zu beenden, während die gewöhnlichen Branchanweisungen nur in einem solchen Block verwendet werden können, um die Steuerung darin zu übertragen. Die leave Anweisung leert den Auswertungsstapel und stellt sicher, dass die entsprechenden umgebenden finally Blöcke ausgeführt werden.

Sie können eine leave -Anweisung nicht verwenden, um einen finally Block zu beenden. Um die Codegenerierung für Ausnahmehandler zu vereinfachen, ist es gültig, aus einem Catch-Block eine -Anweisung zu verwenden, um das leave Steuerelement auf jede Anweisung innerhalb des zugeordneten try Blocks zu übertragen.

Wenn eine Anweisung über einen oder mehrere Präfixcodes verfügt, kann die Steuerung nur auf das erste dieser Präfixe übertragen werden.

Die folgenden Emit Methodenüberladungen können den leave Opcode verwenden:

Gilt für: