OpCodes.Initobj 字段

定义

将指定地址处的值类型的每个字段初始化为 null 引用或相应基元类型的 0。

public static readonly System.Reflection.Emit.OpCode Initobj;

字段值

注解

下表列出了指令的十六进制和Microsoft中间语言(MSIL)程序集格式,以及简短的参考摘要:

格式 程序集格式 描述
FE 15 <T> initobj typeTok 初始化值类型。

堆栈过渡行为按顺序排列,为:

  1. 要初始化的值类型的地址将推送到堆栈上。

  2. 地址从堆栈中弹出;指定地址处的值类型初始化为类型 typeTok

initobj 指令将推送地址(类型为 native int&*)指定的值类型的每个字段初始化为 null 引用或相应基元类型的 0。 调用此方法后,该实例已准备好调用构造函数方法。 如果 typeTok 是引用类型,则此指令的效果与 ldnull 相同,后跟 stind.ref

Newobj不同,initobj 不调用构造函数方法。 Initobj 用于初始化值类型,而 newobj 用于分配和初始化对象。

以下 Emit 方法重载可以使用 initobj 操作码:

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0