OpCodes.Tailcall Champ

Définition

Effectue une instruction d’appel de méthode postfixée de sorte que la trame de pile de la méthode actuelle soit supprimée avant l’exécution de l’instruction d’appel réelle.

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

Valeur de champ

Remarques

Le tableau suivant répertorie le format d'assembly MSIL (Hexadécimal et Microsoft Intermediate Language) de l'instruction, ainsi qu'un bref résumé de référence :

Format Format d’assembly Description
FE 14 Queue. L’appel suivant met fin aux méthodes actuelles

Il n’existe aucun comportement de transition de pile défini pour cette instruction.

L’instruction tail de préfixe doit immédiatement précéder un Call, Calliou Callvirt une instruction. Elle indique que la trame de pile de la méthode actuelle doit être supprimée avant l’exécution de l’instruction d’appel. Il implique également que la valeur retournée à partir de l’appel suivant est également la valeur retournée par la méthode actuelle, et que l’appel peut donc être converti en saut de méthode croisée.

La pile doit être vide, à l’exception des arguments transférés par l’appel suivant. L’instruction suivant l’instruction d’appel doit être un ret. Ainsi, la seule séquence de code valide est tail. call (ou callicallvirt). Les instructions MSIL (Microsoft Intermediate Language) correctes ne doivent pas faire partie de l’instruction call, mais elles peuvent se brancher à la Ret suivante.

La trame actuelle ne peut pas être ignorée lorsque le contrôle est transféré d’un code non approuvé au code approuvé, car cela compromettrait la sécurité de l’identité du code. Les vérifications de sécurité .NET Framework peuvent donc entraîner l’ignorer tail, en laissant une instruction standard Call. De même, afin d’autoriser la sortie d’une région synchronisée après le retour de l’appel, le tail préfixe est ignoré lorsqu’il est utilisé pour quitter une méthode marquée synchronisée.

La surcharge de méthode suivante Emit peut utiliser l’opcode tail :

S’applique à