Aracılığıyla paylaş


OpCodes.Tailcall Alan

Tanım

Gerçek çağrı yönergesi yürütülmeden önce geçerli yöntemin yığın çerçevesinin kaldırılmasını sağlayan bir sonekli yöntem çağrı yönergesi gerçekleştirir.

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 

Alan Değeri

Açıklamalar

Aşağıdaki tabloda, yönergenin onaltılık ve Microsoft Ara Dil (MSIL) derleme biçiminin yanı sıra kısa bir başvuru özeti listelenmiştir:

Biçimlendir Derleme Biçimi Description
FE 14 Kuyruk. Sonraki çağrı geçerli yöntemleri sonlandırır

Bu yönerge için tanımlanmış bir yığın geçişi davranışı yoktur.

Ön ek yönergesi tail , bir Call, Calliveya Callvirt yönergesinin hemen öncesinde olmalıdır. Çağrı yönergesi yürütülmeden önce geçerli yöntemin yığın çerçevesinin kaldırılması gerektiğini gösterir. Ayrıca, aşağıdaki çağrıdan döndürülen değerin de geçerli yöntem tarafından döndürülen değer olduğunu ve bu nedenle çağrının çapraz yöntem atlamasına dönüştürülebileceğini belirtir.

Aşağıdaki çağrı tarafından aktarılan bağımsız değişkenler dışında yığın boş olmalıdır. Çağrı yönergesini izleyen yönerge bir ret olmalıdır. Bu nedenle tek geçerli kod dizisi (veya calli ) callvirtolur tail. call . Doğru Microsoft Ara Dil (MSIL) yönergeleri yönergeye call dallanmamalıdır, ancak sonraki Retile dallanabilir.

Denetim güvenilmeyen koddan güvenilen koda aktarıldığında geçerli çerçeve atılamaz, çünkü bu durum kod kimliği güvenliğini tehlikeye atacak. Bu nedenle .NET Framework güvenlik denetimleri, standart Call bir yönerge bırakarak yoksayılmaya neden tail olabilir. Benzer şekilde, çağrı döndürüldükten sonra eşitlenmiş bir bölgenin çıkışının gerçekleşmesine izin vermek için, tail eşitlenmiş olarak işaretlenmiş bir yöntemden çıkmak için kullanıldığında ön ek yoksayılır.

Aşağıdaki Emit yöntem aşırı yüklemesi opcode'unu tail kullanabilir:

Şunlara uygulanır