共用方式為


DirectCast 運算符 (Visual Basic)

根據繼承或實作引進類型轉換作業。

備註

DirectCast 不會使用 Visual Basic 執行時間協助程式例程進行轉換,因此可提供比 CType 在數據類型轉換和轉換 Object時更好的效能。

您使用的關鍵字 DirectCast 類似於使用 CType 運算子TryCast 運算子 關鍵字的方式。 您會提供表達式做為第一個自變數,以及將它轉換成第二個自變數的類型。 DirectCast 需要兩個自變數數據類型之間的繼承或實作關聯性。 這表示某個類型必須繼承自 或實作另一種類型。

錯誤和失敗

DirectCast 如果偵測到沒有任何繼承或實作關聯性存在,則會產生編譯程序錯誤。 但是缺少編譯程序錯誤並不保證轉換成功。 如果所需的轉換縮小,它可能會在運行時間失敗。 如果發生這種情況,運行時間會 InvalidCastException 擲回錯誤。

轉換關鍵詞

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

關鍵詞 數據類型 自變數關聯性 運行時間失敗
CType 運算子 任何數據類型 必須在兩種數據類型之間定義擴大或縮小轉換 拋出 InvalidCastException
DirectCast 任何數據類型 一個類型必須繼承自 或實作另一種類型 拋出 InvalidCastException
TryCast 運算符 僅限參考型別 一個類型必須繼承自 或實作另一種類型 傳回 Nothing

範例

下列範例示範兩個 用法 DirectCast,一個在運行時間失敗,另一個成功。

Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

在上述範例中,的 q 執行時間類型為 DoubleCType 成功,因為 Double 可以轉換成 Integer。 不過,第一次 DirectCast 在運行時間失敗,因為的 Double 運行時間類型與 沒有繼承關聯 Integer性,即使轉換存在也一樣。 第二DirectCast個會成功,因為它會從 類型Form轉換成 繼承的來源Control類型Form

另請參閱