OpCodes.Conv_I2 字段

定义

将位于计算堆栈顶部的值转换为 int16,然后将其扩展(填充)为 int32

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

字段值

注解

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

格式 程序集格式 说明
68 conv.i2 int16转换为 ,在int32堆栈上推送。

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

  1. value 被推送到堆栈上。

  2. value 从堆栈中弹出,并尝试执行转换操作。

  3. 如果转换成功,则生成的值将推送到堆栈上。

操作 conv.i2 码将 value 堆栈顶部的 转换为操作码中指定的类型,并将转换后的值保留在堆栈顶部。 当小于 4 个字节 int32 的整数值加载到计算堆栈 (时,除非 conv.i 使用 或 conv.u ,在这种情况下,结果也会 native int) 。 浮点值转换为 F 类型。

从浮点数转换为整数值会将数字截断为零。 从 float64 转换为 float32时,精度可能会丢失。 如果 value 太大而无法容纳在 中 float32 (F),则返回正无穷大 (如果 value 为正) ,则返回负无穷 (为 value 负) 。 如果将一个整数类型转换为另一个整数类型时发生溢出,则高位将被截断。 如果结果小于 , int32则该值为符号扩展以填充槽。

如果发生溢出,将浮点类型转换为整数,则返回的值未指定。

使用此字段时,不会引发异常。 有关当结果类型无法正确表示结果值时将引发异常的等效指令,请参阅 Conv_Ovf_I2Conv_Ovf_I2_Un

以下 Emit 方法重载可以使用 conv.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