分享方式:


CType 函式 (Visual Basic)

可傳回明確將運算式轉換成指定資料類型、物件、結構、類別或介面的結果。

語法

CType(expression, typename)

組件

expression:任何有效的運算式。 如果 expression 的值超出 typename 允許的範圍,則 Visual Basic 會擲回例外狀況。

typenameDim 陳述式中 As 子句內合法的任何運算式,也就是任何資料類型、物件、結構、類別或介面的名稱。

備註

提示

您也可以使用下列函式來執行類型轉換:

  • 類型轉換函式,例如 CByteCDblCInt,會執行特定資料類型的轉換。 如需詳細資訊,請參閱 類型轉換函數
  • DirectCast 運算子TryCast 運算子。 這些運算子要求一個類型繼承自或實作另一種類型。 從轉換到和轉換自 Object 資料類型時,它們可提供比 CType 更好的效能。

CType 會內嵌編譯,這表示轉換程式碼是評估運算式之程式碼的一部分。 在某些情況下,程式碼的執行速度較快,因為不會呼叫任何程序來執行轉換。

如果從 expressiontypename (例如,從 IntegerDate) 未定義轉換,則 Visual Basic 會顯示編譯時期錯誤訊息。

如果在執行階段轉換失敗,則會擲回適當的例外狀況。 如果縮小轉換失敗,則 OverflowException 為最常見的結果。 如果未定義轉換,則會擲回 InvalidCastException。 例如,如果 expression 類型為 Object,且其執行階段類型沒有轉換成 typename,就會發生這種情況。

如果 expressiontypename 的資料類型是您定義的類別或結構,您可以將 CType 在該類別或結構上定義為轉換運算子。 這使得CType 起了多載運算子的作用。 如果您這樣做,您可以控制對類別或結構的轉換行為,包括可以擲回的例外狀況。

轉換關鍵字

類型轉換關鍵字的比較如下所示。

關鍵字 資料類型 引數關係 執行階段失敗
CType 任何資料類型 必須在兩種資料類型之間定義放大或縮小轉換 擲回 InvalidCastException
DirectCast 運算子 任何資料類型 一種類型必須繼承自或實作另一種類型 擲回 InvalidCastException
TryCast 僅限參考型別 一種類型必須繼承自或實作另一種類型 可傳回 Nothing

多載化

CType 運算子也可以在程式碼外部定義的類別或結構上多載。 如果您的程式碼轉換成或轉換自這種類別或結構,請務必瞭解其 CType 運算子的行為。 如需詳細資訊,請參閱 Operator Procedures

轉換動態物件

動態物件的類型轉換是由使用 TryConvertBindConvert 方法的使用者定義動態轉換所執行。 如果您正在使用動態物件,請使用 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)

如需其他範例,請參閱隱含和明確轉換

另請參閱