共用方式為


型別轉換表

更新: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 的值是將正數除以零的結果,而且當 SingleDouble 的值大於 MaxValue 欄位的值時,便會傳回此值。NegativeInfinity 的值是將負數除以零的結果,而且當 SingleDouble 的值小於 MinValue 欄位的值時,便會傳回此值。從 Double 轉換為 Single 可能會造成 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

其他資源

轉換型別