OpCodes.Newarr 字段

定义

将对新的从零开始的一维数组(其元素属于特定类型)的对象引用推送到计算堆栈上。

C#
public static readonly System.Reflection.Emit.OpCode Newarr;

字段值

注解

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

格式 程序集格式 说明
8D <T> newarr etype 使用 类型的 etype元素创建一个新数组。

堆栈过渡行为(按顺序排列)是:

  1. 数组中的元素数被推送到堆栈上。

  2. 从堆栈中弹出元素数并创建数组。

  3. 对新数组的对象引用将推送到堆栈上。

指令 newarr 将对象引用 (类型 O) 推送到新的从零开始的一维数组,该数组的元素的类型 etype (描述类型) 的元数据标记。 应将新数组中的元素数指定为 native int。 有效的数组索引范围从零到最大元素数减一。

数组的元素可以是任何类型,包括值类型。

从零开始的一维数字数组是使用元数据标记创建的,该标记引用 (Int32的适当值类型,以此类) 。 数组的元素初始化为适当类型的 0。

非基于零的一维数组和多维数组是使用 Newobj 而不是 newarr创建的。 更常见的是,它们是使用 .NET Framework 中 类的方法Array创建的。

OutOfMemoryException 如果内存不足,无法满足请求,则引发 。

OverflowException 如果 numElems 小于 0,则引发 。

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

适用于

产品 版本
.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