OpCodes.Newobj Alan

Tanım

Değerlendirme yığınına nesne başvurusu (tür O) göndererek yeni bir nesne veya değer türünün yeni bir örneğini oluşturur.

public: static initonly System::Reflection::Emit::OpCode Newobj;
public static readonly System.Reflection.Emit.OpCode Newobj;
 staticval mutable Newobj : System.Reflection.Emit.OpCode
Public Shared ReadOnly Newobj 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:

Format Derleme Biçimi Açıklama
73 <T> newobj ctor Başlatılmamış bir nesne veya değer türü ayırır ve oluşturucu yöntemini ctorçağırır.

Sıralı sırada yığın geçiş davranışı şöyledir:

  1. aracılığıyla arg1 bağımsız değişkenler argn sırayla yığına gönderilir.

  2. argn aracılığıyla arg1 bağımsız değişkenler yığından çıkarılır ve nesne oluşturmak için öğesine ctor geçirilir.

  3. Yeni nesneye başvuru yığına gönderilir.

Yönerge, newobj yeni bir nesne veya değer türünün yeni bir örneğini oluşturur. Ctor çağırılacak oluşturucunun adını, sınıfını ve imzasını gösteren bir meta veri belirtecidir ( methodrefmethoddef veya oluşturucu olarak işaretlenmelidir).

Yönerge, newobj ile ctor ilişkilendirilmiş sınıfın yeni bir örneğini ayırır ve yeni örnekteki tüm alanları 0'a (uygun türde) veya null başvurulara uygun şekilde başlatır. Ardından oluşturucuyu ctor verilen bağımsız değişkenlerle birlikte yeni oluşturulan örnekle birlikte çağırır. Oluşturucu çağrıldıktan sonra, şimdi başlatılan nesne başvurusu (tür O) yığına gönderilir.

Oluşturucunun bakış açısından başlatılmamış nesne 0 bağımsız değişkenidir ve newobj'ye geçirilen diğer bağımsız değişkenler sırayla izleniyor.

Tüm sıfır tabanlı, tek boyutlu diziler kullanılarak oluşturulur Newarr, kullanılarak oluşturulmaz newobj. Öte yandan, diğer tüm diziler (birden fazla boyut veya bir boyutlu ancak sıfır tabanlı değil) kullanılarak newobjoluşturulur.

Değer türleri genellikle kullanılarak newobjoluşturulmaz. Bunlar genellikle bağımsız değişkenler veya yerel değişkenler olarak (sıfır tabanlı, newarr tek boyutlu diziler için) veya nesne alanları olarak ayrılır. Ayrıldıktan sonra kullanılarak başlatılırlar Initobj. Ancak yönerge, newobj yığında bir değer türünün yeni bir örneğini oluşturmak için kullanılabilir. Bu örnek bağımsız değişken olarak geçirilebilir, yerel ortamda depolanabilir vb.

OutOfMemoryException isteği karşılamak için yeterli bellek yoksa oluşturulur.

MissingMethodException belirtilen ada, sınıfa ve imzaya sahip bir oluşturucu yöntemi ctor bulunamazsa oluşturulur. Bu durum genellikle Microsoft Ara Dil (MSIL) yönergeleri çalışma zamanında değil yerel koda dönüştürüldüğünde algılanır.

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

Şunlara uygulanır