OpCodes.Initobj Field
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Initializes each field of the value type at a specified address to a null reference or a 0 of the appropriate primitive type.
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
Field Value
Remarks
The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:
Format | Assembly Format | Description |
---|---|---|
FE 15 < T > |
initobj typeTok |
Initializes a value type. |
The stack transitional behavior, in sequential order, is:
The address of the value type to initialize is pushed onto the stack.
The address is popped from the stack; the value type at the specified address is initialized as type
typeTok
.
The initobj
instruction initializes each field of the value type specified by the pushed address (of type native int
, &
, or *
) to a null reference or a 0 of the appropriate primitive type. After this method is called, the instance is ready for a constructor method to be called. If typeTok
is a reference type, this instruction has the same effect as ldnull
followed by stind.ref
.
Unlike Newobj, initobj
does not call the constructor method. Initobj
is intended for initializing value types, while newobj
is used to allocate and initialize objects.
The following Emit method overload can use the initobj
opcode: