OpCodes.Tailcall Champ

Définition

Exécute une instruction d'appel de méthode suffixée afin que le frame de pile de la méthode actuelle soit supprimé avant cette exécution.

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 et hexadécimal de l’instruction, ainsi qu’un bref résumé des références :

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

Aucun comportement de transition de pile n’est défini pour cette instruction.

L’instruction tail de préfixe doit immédiatement précéder une Callinstruction , Calliou Callvirt . Elle indique que le frame de pile de la méthode actuelle doit être supprimé avant l’exécution de l’instruction d’appel. Cela implique également que la valeur retournée par 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, sauf pour les arguments transférés par l’appel suivant. L’instruction qui suit l’instruction d’appel doit être un ret. Par conséquent, la seule séquence de code valide est tail. call (ou calli ).callvirt Les instructions MSIL (Microsoft Intermediate Language) correctes ne doivent pas être branche vers l’instruction call , mais elles peuvent être branche vers la suivante Ret.

La trame actuelle ne peut pas être ignorée lorsque le contrôle est transféré du 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, pour permettre 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 comme synchronisée.

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

S’applique à