OpCodes.Tailcall フィールド
アセンブリ: mscorlib (mscorlib.dll 内)


命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。
tail プリフィックス命令は、Call、Calli、または Callvirt の各命令の直前に置く必要があります。これは、呼び出し命令が実行される前に、現在のメソッドのスタック フレームを削除する必要があることを示します。また、後続の呼び出しからの戻り値は現在のメソッドから返された値でもあり、このため、この呼び出しをメソッド間ジャンプに変換できることも意味しています。
後続の呼び出しによって転送される引数を除き、スタックは空である必要があります。呼び出し命令の後続の命令は、ret である必要があります。したがって、有効なコード シーケンスは tail. call (あるいは calli または callvirt) だけです。正しい MSIL (Microsoft Intermediate Language) 命令は、call 命令に分岐できませんが、その後続の Ret には分岐できます。
現在のフレームは、信頼関係のないコードから信頼されるコードに制御が転送されたときには、破棄できません。このときにフレームを破棄すると、コード ID セキュリティが損なわれるためです。したがって、.NET Framework セキュリティ チェックによって tail が無視され、標準 Call 命令となることがあります。同様に、呼び出しが戻った後に同期された領域を終了できるようにするために、同期されたことを示すマークが付いたメソッドを終了するために使用される tail プリフィックスは、無視されます。
tail オペコードを使用できる Emit メソッド オーバーロードを次に示します。
-
ILGenerator.Emit(OpCode)

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からOpCodes.Tailcall フィールドを検索する場合は、下記のリンクをクリックしてください。

- OpCodes.Tailcall フィールドのページへのリンク