根據繼承或實作引進類型轉換作業。
備註
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 執行時間類型為 Double。
CType 成功,因為 Double 可以轉換成 Integer。 不過,第一次 DirectCast 在運行時間失敗,因為的 Double 運行時間類型與 沒有繼承關聯 Integer性,即使轉換存在也一樣。 第二DirectCast個會成功,因為它會從 類型Form轉換成 繼承的來源Control類型Form。