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 Intermediate Language (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
2A2A 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命令は、転送の制御を使用することはできません、tryfiltercatch、または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. filterfinallyブロックは、論理的に一部の例外処理と、コードが埋め込まれているメソッドではなく、正しく生成された Microsoft Intermediate Language (MSIL) の手順ではメソッド内からの戻り値は実行しないで、filterまたはfinallyします。Because 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 opcode:The following Emit method overload can use the ret opcode:

  • ILGenerator.Emit(OpCode)ILGenerator.Emit(OpCode)