OpCodes.Ldind_I2 字段

定义

int16 类型的值作为 int32 间接加载到计算堆栈上。

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

字段值

注解

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

格式 程序集格式 说明
48 ldind.i2 int16 address addr 处的值作为 int32加载到堆栈上。

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

  1. 将地址推送到堆栈上。

  2. 地址从堆栈中弹出;将提取位于地址处的值。

  3. 提取的值将推送到堆栈上。

指令ldind.i2将 、 或 *类型的native int&指定地址 (的值间接加载int16到堆栈上,) 为 int32

ldind所有指令都是指定相应内置值类的指令的快捷方式Ldobj

请注意,小于 4 个字节的整数值将 int32 扩展到 (加载到计算堆栈上时不 native int) 。 浮点值在加载到计算堆栈时转换为 F 类型。

格式正确的 Microsoft 中间语言 (MSIL) 可确保 ldind 以与指针类型一致的方式使用指令。

最初推送到堆栈上的地址必须与计算机上的对象的自然大小对齐, NullReferenceException 否则可能会发生 (查看 Unaligned) 预防措施的前缀指令。 例如 LdlocaLdarga ,返回地址和) 的所有 MSIL 指令的结果 (安全对齐。 对于大于 1 字节的数据类型,字节顺序取决于目标 CPU。 依赖于字节排序的代码可能不会在所有平台上运行。

NullReferenceException 如果检测到无效地址,可能会引发 。

以下 Emit 方法重载可以使用 ldind.i2 操作码:

适用于

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