OpCodes.Ret OpCodes.Ret OpCodes.Ret OpCodes.Ret Field

定義

現在のメソッドから戻り、呼び出し先の評価スタックから呼び出し元の評価スタックに戻り値 (存在する場合) をプッシュします。Returns from the current method, pushing a return value (if present) from the callee's evaluation stack onto the caller's evaluation stack.

public: static initonly System::Reflection::Emit::OpCode Ret;
public static readonly System.Reflection.Emit.OpCode Ret;
 staticval mutable Ret : System.Reflection.Emit.OpCode
Public Shared ReadOnly Ret As OpCode 

フィールド値

注釈

次の表は、命令の16進形式と Microsoft 中間言語 (MSIL) のアセンブリ形式と、簡単なリファレンスの概要を示しています。The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

形式Format アセンブリ形式Assembly Format 説明Description
2A>2A retret はメソッドからを返します。値を返す可能性があります。Returns from method, possibly returning a value.

スタックの移行動作は、次の順序で実行されます。The stack transitional behavior, in sequential order, is:

  1. 戻り値は、呼び出し先の評価スタックからポップされます。The return value is popped from the callee evaluation stack.

  2. 手順 1. で取得した戻り値は、呼び出し元の評価スタックにプッシュされます。The return value obtained in step 1 is pushed onto the caller evaluation stack.

呼び出し先の評価スタックに戻り値が存在しない場合、値は返されません (呼び出し先または呼び出し元のメソッドのスタック遷移動作はありません)。If the return value is not present on the callee evaluation stack, no value is returned (no stack transition behaviors for either the callee or caller method).

現在のメソッドの戻り値の型によって、スタックの一番上からフェッチされ、現在のメソッドを呼び出したメソッドのスタックにコピーされる値の型が決まります。The type of the return value, if any, of the current method determines the type of value to be fetched from the top of the stack and copied onto the stack of the method that called the current method. 返される値を除き、現在のメソッドの評価スタックは空である必要があります。The evaluation stack for the current method must be empty except for the value to be returned.

命令retを使用してtry、、 filter catch、、またはfinallyブロックから制御を移すことはできません。The ret instruction cannot be used to transfer control out of atry, filter, catch, or finally block. tryまたはcatch内から、命令をLeave ret 、外側のすべての例外ブロックの外側にある命令の出力先と共に使用します。From within a try or catch, use the Leave instruction with a destination of a ret instruction that is outside all enclosing exception blocks. filterブロックとfinallyブロックは論理的には例外処理の一部であり、コードが埋め込まれているメソッドではないため、正しく生成された Microsoft 中間言語 (MSIL) 命令は、内部からメソッドを返しません。filterまたはfinallyBecause the filter and finally blocks are logically part of exception handling and not the method in which their code is embedded, correctly generated Microsoft Intermediate Language (MSIL) instructions do not perform a method return from within a filter or finally.

Emitのメソッドオーバーロードでは、 retオペコードを使用できます。The following Emit method overload can use the ret opcode:

  • ILGenerator (オペコード)ILGenerator.Emit(OpCode)

適用対象