CType 函式 (Visual Basic)
可傳回明確將運算式轉換成指定資料類型、物件、結構、類別或介面的結果。
語法
CType(expression, typename)
組件
expression
:任何有效的運算式。 如果 expression
的值超出 typename
允許的範圍,則 Visual Basic 會擲回例外狀況。
typename
Dim
陳述式中 As
子句內合法的任何運算式,也就是任何資料類型、物件、結構、類別或介面的名稱。
備註
提示
您也可以使用下列函式來執行類型轉換:
- 類型轉換函式,例如
CByte
、CDbl
和CInt
,會執行特定資料類型的轉換。 如需詳細資訊,請參閱 類型轉換函數。 - DirectCast 運算子或 TryCast 運算子。 這些運算子要求一個類型繼承自或實作另一種類型。 從轉換到和轉換自
Object
資料類型時,它們可提供比CType
更好的效能。
CType
會內嵌編譯,這表示轉換程式碼是評估運算式之程式碼的一部分。 在某些情況下,程式碼的執行速度較快,因為不會呼叫任何程序來執行轉換。
如果從 expression
到 typename
(例如,從 Integer
到 Date
) 未定義轉換,則 Visual Basic 會顯示編譯時期錯誤訊息。
如果在執行階段轉換失敗,則會擲回適當的例外狀況。 如果縮小轉換失敗,則 OverflowException 為最常見的結果。 如果未定義轉換,則會擲回 InvalidCastException。 例如,如果 expression
類型為 Object
,且其執行階段類型沒有轉換成 typename
,就會發生這種情況。
如果 expression
或 typename
的資料類型是您定義的類別或結構,您可以將 CType
在該類別或結構上定義為轉換運算子。 這使得CType
起了多載運算子的作用。 如果您這樣做,您可以控制對類別或結構的轉換行為,包括可以擲回的例外狀況。
轉換關鍵字
類型轉換關鍵字的比較如下所示。
關鍵字 | 資料類型 | 引數關係 | 執行階段失敗 |
---|---|---|---|
CType |
任何資料類型 | 必須在兩種資料類型之間定義放大或縮小轉換 | 擲回 InvalidCastException |
DirectCast 運算子 | 任何資料類型 | 一種類型必須繼承自或實作另一種類型 | 擲回 InvalidCastException |
TryCast | 僅限參考型別 | 一種類型必須繼承自或實作另一種類型 | 可傳回 Nothing |
多載化
CType
運算子也可以在程式碼外部定義的類別或結構上多載。 如果您的程式碼轉換成或轉換自這種類別或結構,請務必瞭解其 CType
運算子的行為。 如需詳細資訊,請參閱 Operator Procedures。
轉換動態物件
動態物件的類型轉換是由使用 TryConvert 或 BindConvert 方法的使用者定義動態轉換所執行。 如果您正在使用動態物件,請使用 CTypeDynamic 方法來轉換動態物件。
範例
下列範例會使用 CType
函式,將運算式轉換成 Single
資料類型。
Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)
如需其他範例,請參閱隱含和明確轉換。