Aracılığıyla paylaş


OpCodes.Newobj Alan

Tanım

Değerlendirme yığınına bir 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 Dili (MSIL) derleme biçimi ve kısa başvuru özeti listelenmiştir:

Biçimlendir Derleme Biçimi Description
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ışı şu şekildedir:

  1. aracılığıyla argn bağımsız değişkenler arg1 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şturma 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 ( methodref veya methoddef oluşturucu olarak işaretlenmelidir).

yönergesi newobj ile ctor ilişkilendirilmiş sınıfını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, yeni oluşturulan örnekle birlikte verilen bağımsız değişkenlerle oluşturucuyu ctor ç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 ilerler.

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 Initobjbaşlatılırlar. 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 daha sonra bağımsız değişken olarak geçirilebilir, yerelde depolanır ve bu şekilde devam eder.

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