Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize

OpCodes.Initobj Field

Initializes each field of the value type at a specified address to a null reference or a 0 of the appropriate primitive type.

Namespace:  System.Reflection.Emit
Assemblies:   System.Reflection.Primitives (in System.Reflection.Primitives.dll)
  mscorlib (in mscorlib.dll)

public static readonly OpCode Initobj

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:

  1. The address of the value type to initialize is pushed onto the stack.

  2. 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:

  • ILGenerator.Emit(OpCode, Type)

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8
Show:
© 2015 Microsoft