Share via


轉換概觀

更新:2007 年 11 月

每個值都有相關聯的型別,該型別定義屬性,例如配置給值的空間數、能夠擁有的可能值範圍,以及提供的成員。許多值都可以表示成多種型別。例如,數值 4 就可以表示成整數值或浮點 (Floating-Point) 值。轉換時會建立新型別的值,與舊型別的值相等,但是不一定會保留兩個物件的識別 (Identity) (或實際的值)。除了支援隱含轉換之外,.NET Framework 還支援透過 System.Convert 類別的明確轉換,其提供型別之間轉換的方法。

注意事項:

個別語言也可能會提供執行明確轉換的方式。例如,C# 使用轉型 (Casting) 運算子、Visual Basic 使用編譯器實作的轉換函式,例如 CType、CInt 和 DirectCast。

Common Language Runtime 可支援擴展轉換和縮小轉換。例如,以 32 位元帶正負號的整數 (Signed Integer) 表示的數值可轉換成 64 位元帶正負號的整數。這是擴展轉換的範例。相反的轉換 (從 64 位元轉換成 32 位元) 則是縮小轉換的範例。擴展轉換的結果資訊便不會遺失 (雖然精確度可能會),不過資訊可能會在縮小轉換的過程中遺失。如需擴展轉換清單,請參閱型別轉換表

下列範例會說明擴展轉換,此處 Int32 值 MyInt 會轉換成 Int64 值。這個轉換是以隱含的方式達成,而不使用 Convert 類別,或是任何其他轉換方法或運算子。

Dim MyInt As Integer = 1234567891
Dim MyBigInt As Long = MyInt
Console.WriteLine(MyBigInt)      ' Displays 1234567891
int MyInt = 1234567891;
long MyBigInt = MyInt;
Console.WriteLine(MyBigInt);           // Displays 1234567891

下列範例會說明縮小轉換,此處 Int64 值 MyBigInt 會轉換成 Int32 值。這類縮小轉換必須在 C# 中明確執行,而如果 Option Strict 設為 On,則同樣必須在 Visual Basic 中明確執行。本範例中會呼叫 ToInt32 方法執行轉換。

Dim MyBigInt As Long = 1234567891
' exception handler: narrowing conversions can overflow
Try
   Dim MyInt As Integer = Convert.ToInt32(MyBigInt)
   Console.WriteLine(MyInt)         ' Displays 1234567891
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0} to an integer.", _ 
                     MyBigInt)      
End Try   
long MyBigInt = 1234567891;
// exception handler: narrowing conversions can overflow
try
{
   int MyInt = Convert.ToInt32(MyBigInt);
   Console.WriteLine(MyBigInt);        // Displays 1234567891
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert {0} to an integer.", 
                     MyBigInt);
}   

請參閱

概念

型別轉換表

使用 System.Convert 轉換資料型別

明確轉換

參考

System.Convert

其他資源

使用基底型別