.NET 中的類型轉換表

將一種類型的值轉換成另一種大小相等或較大類型的值時,就會發生擴展轉換。 將一種類型的值轉換成另一種大小較小類型的值時,就會發生縮小轉換。 本主題中的表格將說明這兩種轉換類型的行為。

放大轉換

下表描述可執行且不會導致資訊遺失的擴展轉換。

類型 不會造成資料遺失的可轉換類型
Byte +UInt16Int16UInt32Int32UInt64Int64SingleDoubleDecimal
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 Int64DoubleDecimal
UInt32 Int64, UInt64, Double, Decimal
Int64 Decimal
UInt64 Decimal
Single Double

某些轉換成 SingleDouble 的擴展轉換可能會導致失去精確度。 下表描述有時會導致資訊遺失的擴展轉換。

類型 可轉換類型
Int32 Single
UInt32 Single
Int64 SingleDouble
UInt64 SingleDouble
Decimal SingleDouble

縮小轉換

某些轉換成 SingleDouble 的縮小轉換可能會導致資訊遺失。 如果目標類型無法正確表示來源的範圍,產生的類型會設定為常數 PositiveInfinityNegativeInfinityPositiveInfinity 是正數除以零所得的結果;當 SingleDouble 的值超過 MaxValue 欄位的值時,也會傳回此值。 NegativeInfinity 是負數除以零所得的結果;當 SingleDouble 的值低於 MinValue 欄位的值時,也會傳回此值。 從 Double 轉換為 Single 可能會導致 PositiveInfinityNegativeInfinity

縮小轉換也可能會導致其他資料類型的資訊遺失。 不過,如果所轉換類型的值超出目標類型的 MaxValueMinValue 欄位所指定的範圍,而且執行階段已檢查轉換,確定目標類型的值未超過其 MaxValueMinValue,則會擲回 OverflowException。 使用 System.Convert 類別執行的轉換永遠都會以這種方式進行檢查。

下表列出使用 System.Convert 擲回 OverflowException 的轉換,或所轉換類型的值超出為產生類型所定義的範圍時的任何已檢查轉換。

類型 可轉換類型
Byte SByte
SByte Byte, UInt16, UInt32, UInt64
Int16 ByteSByteUInt16
UInt16 ByteSByteInt16
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

另請參閱