OpCodes.Newobj Bidang
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membuat objek baru atau instans baru dari jenis nilai, mendorong referensi objek (jenis O
) ke tumpukan evaluasi.
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
Nilai Bidang
Keterangan
Tabel berikut mencantumkan format rakitan heksadesimal dan Microsoft Intermediate Language (MSIL) instruksi, bersama dengan ringkasan referensi singkat:
Format | Format Rakitan | Deskripsi |
---|---|---|
73 <T > |
newobj ctor |
Mengalokasikan objek atau jenis nilai yang tidak diinisialisasi dan memanggil metode ctor konstruktor . |
Perilaku transisi tumpukan, dalam urutan berurutan, adalah:
arg1
Argumen melaluiargn
didorong pada tumpukan secara berurutan.argn
Argumen melaluiarg1
muncul dari tumpukan dan diteruskan kector
untuk pembuatan objek.Referensi ke objek baru didorong ke tumpukan.
newobj
Instruksi membuat objek baru atau instans baru dari jenis nilai.
Ctor
adalah token metadata ( methodref
atau methoddef
yang harus ditandai sebagai konstruktor) yang menunjukkan nama, kelas, dan tanda tangan konstruktor untuk dipanggil.
newobj
Instruksi mengalokasikan instans baru kelas yang terkait dengan ctor
dan menginisialisasi semua bidang dalam instans baru ke 0 (dari jenis yang tepat) atau referensi null yang sesuai. Kemudian memanggil konstruktor ctor
dengan argumen yang diberikan bersama dengan instans yang baru dibuat. Setelah konstruktor dipanggil, referensi objek yang sekarang diinisialisasi (jenis O
) didorong pada tumpukan.
Dari sudut pandang konstruktor, objek yang tidak diinisialisasi adalah argumen 0 dan argumen lain yang diteruskan ke newobj mengikuti secara berurutan.
Semua array satu dimensi berbasis nol dibuat menggunakan Newarr, bukan newobj
. Di sisi lain, semua array lain (lebih dari satu dimensi, atau satu dimensi tetapi tidak berbasis nol) dibuat menggunakan newobj
.
Jenis nilai biasanya tidak dibuat menggunakan newobj
. Mereka biasanya dialokasikan baik sebagai argumen atau variabel lokal, menggunakan newarr
(untuk array berbasis nol, satu dimensi), atau sebagai bidang objek. Setelah dialokasikan, mereka diinisialisasi menggunakan Initobj. Namun, newobj
instruksi dapat digunakan untuk membuat instans baru dari jenis nilai pada tumpukan, yang kemudian dapat diteruskan sebagai argumen, disimpan dalam lokal, dan sebagainya.
OutOfMemoryException dilemparkan jika tidak ada cukup memori untuk memenuhi permintaan.
MissingMethodException dilemparkan jika metode ctor
konstruktor dengan nama, kelas, dan tanda tangan yang ditunjukkan tidak dapat ditemukan. Ini biasanya terdeteksi ketika instruksi Microsoft Intermediate Language (MSIL) dikonversi ke kode asli, bukan pada runtime.
Metode berikut Emit kelebihan beban dapat menggunakan newobj
opcode: