OpCodes.Calli Alan
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Değerlendirme yığınında belirtilen yöntemini (giriş noktasına işaretçi olarak) çağıran bir kural tarafından açıklanan bağımsız değişkenlerle çağırır.
public: static initonly System::Reflection::Emit::OpCode Calli;
public static readonly System.Reflection.Emit.OpCode Calli;
staticval mutable Calli : System.Reflection.Emit.OpCode
Public Shared ReadOnly Calli 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 |
---|---|---|
29 <T > |
Calli callSiteDescr |
Çağırma kuralı tarafından açıklanan bağımsız değişkenlerle işaret edilen yöntemini çağırır. |
Sıralı sırada yığın geçiş davranışı şu şekildedir:
aracılığıyla
argN
yöntem bağımsız değişkenleriarg1
yığına gönderilir.Yöntem giriş işaretçisi yığına gönderilir.
aracılığıyla yöntem bağımsız değişkenleri
arg1
argN
ve yöntem giriş işaretçisi yığından çıkarılır; yöntem çağrısı gerçekleştirilir. Tamamlandığında, çağıran yöntemi tarafından bir dönüş değeri oluşturulur ve çağırana gönderilir.Dönüş değeri yığına gönderilir.
Yönerge, calli
aracılığıyla argN
bağımsız değişkenlerle arg1
yöntem giriş işaretçisini çağırır. Bu bağımsız değişkenlerin türleri, belirli çağırma kuralı (callSiteDesc
) tarafından açıklanır. Denetimi calli
aktarmadan önce geçerli yöntem durumunun serbest bırakılacağını belirtmek için yönergenin önüne hemen bir tail
ön ek (Tailcall) eklenebilir. Çağrı denetimi kaynak yöntemden daha yüksek bir güven yöntemine aktaracaksa yığın çerçevesi serbest bırakılmaz; bunun yerine yürütme, sağlanmamış gibi tail
sessizce devam eder.
Yöntem giriş işaretçisinin, çağırma kuralı (tek başına imza için meta veri belirteci) tarafından açıklanan bağımsız değişkenlerle yasal olarak çağrılabilen yerel koda (hedef makinenin) belirli bir işaretçisi olduğu varsayılır. Böyle bir işaretçi, veya Ldvirtftn yönergeleri kullanılarak Ldftn oluşturulabilir veya yerel koddan geçirilebilir.
Çağırma kuralı dinamik olarak denetlenmediğinden, hedef gerçekten belirtilen çağırma kuralını kullanmıyorsa yönerge kullanan calli
kod düzgün çalışmaz.
Bağımsız değişkenler yığına soldan sağa sırayla yerleştirilir. Diğer bir ifadeyle, ilk bağımsız değişken hesaplanır ve yığına, ardından ikinci bağımsız değişkene, sonra da gerekli tüm bağımsız değişkenler yığının üstünde azalan sırada olana kadar üçüncü bağımsız değişkene yerleştirilir. Bir örnek veya sanal yöntem için bağımsız değişken oluşturma kod dizisi, kullanıcı tarafından görünen bağımsız değişkenlerden önce bu örnek başvurusunun (null başvuru olmaması gerekir) göndermesi gerekir.
SecurityException sistem güvenliği çağırana çağrılan yönteme erişim vermezse oluşturulabilir. Güvenlik denetimi, Microsoft Ara Dil (MSIL) yönergeleri çalışma zamanında değil yerel koda dönüştürüldüğünde gerçekleşebilir.
Yığında yönerge calli
gerçekleştirmek için aşağıdaki EmitCalli yöntemler kullanılabilir. Yönergeyi calli
doğrudan yığına yerleştirmek için sınıfını Emit kullanmak yerine aşağıdaki yöntemler aracılığıyla çağrılmalıdır.
ILGenerator.EmitCalli(OpCode, CallingConventions, Type, Type[], Type[]) yönetilen çağrı kuralı kullanan çağrılar için.
ILGenerator.EmitCalli(OpCode, CallingConvention, Type, Type[]) yönetilmeyen bir çağrı kuralı kullanan çağrılar için.