使用英语阅读

通过


OpCodes.Stloc 字段

定义

从计算堆栈顶部弹出当前值,并将其存储在指定索引处的局部变量列表中。

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

字段值

注解

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

格式 程序集格式 说明
FE 0E <unsigned int16> stloc index 从堆栈中弹出一个值,并将其存储在局部变量 index中。

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

  1. 从堆栈中弹出一个值,并放置在局部变量 index中。

指令 stloc 从计算堆栈中弹出顶部值,并将其移动到局部变量编号 index中,其中局部变量的编号为 0。 值的类型必须与当前方法的本地签名中指定的局部变量的类型匹配。

存储到包含小于 4 个字节的整数值的局部变量中,会在值从堆栈移动到局部变量时截断该值。 浮点值从其本机大小 (类型 F) 舍入到与 参数关联的大小。

正确的 Microsoft 中间语言 (MSIL) 指令要求为 index 有效的本地索引。 stloc对于指令,index必须位于范围 0 到 65534(含 (具体来说,65535) 无效。 排除 65535 的原因很实用:可能的实现将使用 2 字节整数来跟踪局部变量的索引以及给定方法的局部变量总数。 如果索引 65535 有效,则需要一个较宽的整数来跟踪此类方法中的局部变量数。

以下 Emit 方法重载可以使用 stloc opcode:

适用于

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