次の方法で共有


OpCodes.Ret フィールド

現在のメソッドから戻り、呼び出し元の評価スタックから呼び出し先の評価スタックに戻り値 (存在する場合) をプッシュします。

Public Shared ReadOnly Ret As OpCode
[C#]
public static readonly OpCode Ret;
[C++]
public: static OpCode Ret;
[JScript]
public static var Ret : OpCode;

解説

命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。

形式 アセンブリ形式 説明
2A ret メソッドから戻ります。このとき、値を返す可能性があります。

スタックの遷移動作を順番に示すと、次のようになります。

  1. 戻り値が呼び出し先の評価スタックからポップされます。
  2. 手順 1 で取得された戻り値が、呼び出し元の評価スタックにプッシュされます。

戻り値が呼び出し先の評価スタックにない場合は、値が戻ることはありません。つまり、呼び出し元メソッドおよび呼び出し先メソッドのどちらについてもスタックの遷移動作は発生しません。

現在のメソッドの戻り値がある場合は、その戻り値の型によって、スタックの一番上からフェッチされ、現在のメソッドを呼び出したメソッドのスタックにコピーされる値の型が決まります。戻される値を除き、現在のメソッドの評価スタックは空である必要があります。

ret 命令を使用して、try、filter、catch、または finally の各ブロックから制御を転送することはできません。try または catch の内部から、外側の例外ブロックのさらに外側にある ret 命令の命令先で、 Leave 命令を使用します。filter ブロックと finally ブロックは、論理的に例外処理の一部であり、これらのコードが埋め込まれているメソッドではないため、正しく作成された MSIL (Microsoft Intermediate Language) 命令は、filter または finally の内部から返された命令を実行しません。

ret オペコードを使用できる Emit コンストラクタ オーバーロードを次に示します。

  • ILGenerator.Emit(OpCode)

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

OpCodes クラス | OpCodes メンバ | System.Reflection.Emit 名前空間