类型转换表

更新:2007 年 11 月

当一种类型的值转换为大小相等或更大的另一类型时,则发生扩大转换。当一种类型的值转换为较小的另一种类型时,则发生收缩转换。本主题中的表格解释了这两类转换表现的行为。

扩大转换

下表描述了可以执行的且不会丢失信息的扩大转换。

类型

可在不丢失数据的情况下转换为

Byte

UInt16Int16UInt32Int32UInt64Int64SingleDoubleDecimal

SByte

Int16Int32Int64SingleDoubleDecimal

Int16

Int32Int64SingleDoubleDecimal

UInt16

UInt32Int32UInt64Int64SingleDoubleDecimal

Char

UInt16UInt32Int32UInt64Int64SingleDoubleDecimal

Int32

Int64DoubleDecimal

UInt32

Int64DoubleDecimal

Int64

Decimal

UInt64

Decimal

Single

Double

一些目标为 SingleDouble 的扩大转换可能会导致丢失精度。下面的表格描述了有时会导致信息丢失的扩大转换。

类型

可转换为

Int32

Single

UInt32

Single

Int64

SingleDouble

UInt64

SingleDouble

Decimal

SingleDouble

收缩转换

目标为 SingleDouble 的收缩转换可能会导致丢失信息。如果目标类型无法正确表达源类型的大小,则结果类型将设置为常数 PositiveInfinityNegativeInfinityPositiveInfinity 的值是正数除以 0 的结果,并且该值在 SingleDouble 的值超过 MaxValue 字段的值时返回。NegativeInfinity 的值是负数除以 0 的结果,并且该值在 SingleDouble 值小于 MinValue 字段的值时返回。从 DoubleSingle 的转换可能会导致 PositiveInfinityNegativeInfinity

收缩转换还可能导致其他数据类型的信息丢失。但是,如果转换的某类型值不在目标类型的 MaxValueMinValue 字段指定的范围内,并且运行库检查该转换以确保目标类型的值不超出它的 MaxValueMinValue,则会引发 OverflowException。使用 System.Convert 类执行的转换总是以这种方式检查。有关不使用 System.Convert 来执行所检查转换的信息,请参见有关显式转换的一节。

下表列出了使用 System.Convert 引发 OverflowException 的转换,或所转换类型的值不在结果类型的定义范围之内的任何已检查的转换。

类型

可转换为

Byte

Sbyte

SByte

ByteUInt16UInt32UInt64

Int16

ByteSByteUInt16

UInt16

ByteSByteInt16

Int32

ByteSByteInt16UInt16UInt32

UInt32

ByteSByteInt16UInt16Int32

Int64

ByteSByteInt16UInt16Int32UInt32UInt64

UInt64

ByteSByteInt16UInt16Int32UInt32Int64

Decimal

ByteSByteInt16UInt16Int32UInt32Int64UInt64

Single

ByteSByteInt16UInt16Int32UInt32Int64UInt64

Double

ByteSByteInt16UInt16Int32UInt32Int64UInt64

请参见

参考

System.Convert

其他资源

转换类型