OpCodes.Initobj Поле
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует каждое поле типа значения по указанному адресу с пустой ссылкой или 0 соответствующего примитивного типа.
public: static initonly System::Reflection::Emit::OpCode Initobj;
public static readonly System.Reflection.Emit.OpCode Initobj;
staticval mutable Initobj : System.Reflection.Emit.OpCode
Public Shared ReadOnly Initobj As OpCode
Значение поля
Комментарии
В следующей таблице перечислены шестнадцатеричные и шестнадцатеричные и msIL-коды инструкции, а также краткие справочные сводки:
| Формат | Формат сборки | Описание |
|---|---|---|
FE 15 <T> |
initobj
typeTok
|
Инициализирует тип значения. |
Переходное поведение стека в последовательном порядке:
Адрес типа значения для инициализации передается в стек.
Адрес подается из стека; Тип значения по указанному адресу инициализируется как тип
typeTok.
Инструкция initobj инициализирует каждое поле типа значения, указанного push-адресом (типом native int, &или *) в пустую ссылку или 0 соответствующего примитивного типа. После вызова этого метода экземпляр готов к вызову метода конструктора. Если typeTok является ссылочным типом, эта инструкция имеет тот же эффект, что и ldnull, за которым следует stind.ref.
В отличие от Newobj, initobj не вызывает метод конструктора.
Initobj предназначен для инициализации типов значений, а newobj используется для выделения и инициализации объектов.
Следующая перегрузка метода Emit может использовать initobj opcode: