类型转换表

发生扩大转换。,当一个类型的值转换为相等或更大范围的另一种类型时。 收缩转换时,会发生一个类型的值转换为较小的另一种类型的值时。 本主题中的表阐释了两种转换类型显示的行为。
扩大转换

下表描述了可以执行,不会丢失信息的扩大转换。
类型 可以转换,而不会丢失数据
Byte UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
SByte Int16, Int32, Int64, Single, Double, Decimal
Int16 Int32, Int64, Single, Double, Decimal
UInt16 UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Char UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Int32 Int64, Double, Decimal
UInt32 Int64, UInt64, Double, Decimal
Int64 Decimal
UInt64 Decimal
Single Double
为 Single 或 Double 的那些扩大转换可能会导致丢失精度。 下表描述了有时会导致信息丢失的扩大转换。
类型 可以转换
Int32 Single
UInt32 Single
Int64 Single, Double
UInt64 Single, Double
Decimal Single, Double
收缩转换

为 Single 或 Double 的收缩转换可能导致信息丢失。 如果目标类型无法正确表达源的大小,则结果类型设置为常数 PositiveInfinity 或 NegativeInfinity。 ,当 Single 或 Double 的值超过 MaxValue 字段的值时,PositiveInfinity 由部件的正数由零和也会返回。 ,当 Single 或 Double 的值。 MinValue 字段中的值时,会NegativeInfinity 产生负数除以零时和也会返回。 从 Double 的转换到 Single 可能导致 PositiveInfinity 或 NegativeInfinity。收缩转换可能会导致其他数据类型的信息丢失。 但是, OverflowException 引发,如果将类型的值不在目标类型的 MaxValue 和 MinValue 字段指定的范围内,因此,转换在运行时检查确保目标类型的值不超过其 MaxValue 或 MinValue。 对 System.Convert 类的转换始终以这种方式检查。 下表列出了 OverflowException 使用 System.Convert 或所有签出的转换的转换,如果转换的类型的值不在结果类型的定义的大小。
类型 可以转换
Byte SByte
SByte Byte, UInt16, UInt32, UInt64
Int16 Byte, SByte, UInt16
UInt16 Byte, SByte, Int16
Int32 Byte, SByte, Int16, UInt16, UInt32
UInt32 Byte, SByte, Int16, UInt16, Int32
Int64 Byte, SByte, Int16, UInt16, Int32, UInt32, UInt64
UInt64 Byte, SByte, Int16, UInt16, Int32, UInt32, Int64
Decimal Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Single Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Double Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
posted @ 2013-01-31 19:53  汪磊  阅读(397)  评论(0编辑  收藏  举报