使用英语阅读

通过


OpCodes.Stelem_Ref 字段

定义

用计算堆栈上的对象 ref 值(O 类型)替换给定索引处的数组元素。

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

字段值

注解

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

格式 程序集格式 说明
A2 stelem.ref 将提供的索引处的数组元素替换为 ref 堆栈上 (类型 O) 的值。

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

  1. 对数组 array的对象引用被推送到堆栈上。

  2. array 元素的有效索引将推送到堆栈上。

  3. 将值推送到堆栈上。

  4. 从堆栈中弹出值、索引和数组引用;值放入给定索引处的数组元素中。

指令 stelem.ref 将一维数组 array 中提供的索引处的 元素的值替换为推送到堆栈上的 ref (类型 O) 值。

数组是 对象,因此由 类型的 O值表示。 索引的类型 native int为 。

请注意, stelem.ref 在将值分配给数组元素之前,将所提供的值隐式转换为 的元素类型 array 。 即使对于已验证的代码,此强制转换也可能会失败。 因此, stelem.ref 指令可能会引发 InvalidCastException。 对于不从零开始的一维数组和多维数组, Array 类提供 方法 SetValue

NullReferenceException 如果 array 是空引用,则引发 。

IndexOutOfRangeException 如果 index 为负或大于 的 array边界,则引发 。

ArrayTypeMismatchException 如果未 array 保存所需类型的元素,则引发 。

以下 Emit 方法重载可以使用 stelem.ref 操作码:

适用于

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