傳回明確將運算式轉換成指定資料類型、物件、結構、類別或介面的結果。
語法
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 如果轉換未定義,則擲回 in InvalidCastException 。 例如,如果 的類型Object,且其執行時期類型沒有轉換為 typename,則expression可能會發生這種情況。
如果 或 typename 的資料expression類型是您已定義的類別或結構,您可以在該類別或結構上定義CType為轉換運算子。 這使得充 CType 當 一個多載的運算子。 如果您這樣做,您可以控制進出類別或結構的轉換行為,包括可以擲回的例外狀況。
轉換關鍵字
類型轉換關鍵字的比較如下。
| Keyword | 數據類型 | 論證關係 | 執行階段失敗 |
|---|---|---|---|
CType |
任何資料類型 | 必須在兩種資料類型之間定義擴大或縮小轉換 | 投擲 InvalidCastException |
| DirectCast 運算子 | 任何資料類型 | 一種類型必須繼承或實作另一種類型 | 投擲 InvalidCastException |
| 嘗試投擲 | 僅限參考類型 | 一種類型必須繼承或實作另一種類型 | 不傳回 任何內容 |
超載
CType運算子也可以在程式碼外部定義的類別或結構上多載。 如果您的程式碼轉換到此類類別或結構或從此類類別或結構轉換,請確保您了解其 CType 運算子的行為。 如需詳細資訊,請參閱 操作員程序。
轉換動態物件
動態物件的類型轉換是由使用者定義的動態轉換所執行,這些轉換使用 或 TryConvertBindConvert 方法。 如果您正在使用動態物件,請使用該 CTypeDynamic 方法來轉換動態物件。
Example
下列範例使用運算子將 CType 運算式 Single 轉換為資料類型。
Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)
如需其他範例,請參閱 隱含和明確轉換。