引進不會擲回例外狀況的類型轉換作業。
備註
如果嘗試的轉換失敗, CType 且 DirectCast 兩者都會擲回 InvalidCastException 錯誤。 這可能會對應用程式的效能造成負面影響。
TryCast 會傳回 Nothing,因此您只需要針對 Nothing測試傳回的結果,而不需要處理可能的例外狀況。
您使用 TryCast 關鍵字的方式與使用 CType 運算子 和 DirectCast 運算子 關鍵字的方式相同。 您會提供表達式做為第一個自變數,以及將它轉換成第二個自變數的類型。
TryCast 僅適用於參考型別,例如類別和介面。 這兩種類型之間需要繼承或實作關聯性。 這表示某個類型必須繼承自 或實作另一種類型。
錯誤和失敗
TryCast 如果偵測到沒有任何繼承或實作關聯性存在,則會產生編譯程序錯誤。 但是缺少編譯程序錯誤並不保證轉換成功。 如果所需的轉換縮小,它可能會在運行時間失敗。 如果發生這種情況, TryCast 則傳回 Nothing。
轉換關鍵詞
類型轉換關鍵詞的比較如下所示。
| 關鍵詞 | 數據類型 | 自變數關聯性 | 運行時間失敗 |
|---|---|---|---|
| CType 運算子 | 任何數據類型 | 必須在兩種數據類型之間定義擴大或縮小轉換 | 拋出 InvalidCastException |
| DirectCast 運算符 | 任何數據類型 | 一個類型必須繼承自 或實作另一種類型 | 拋出 InvalidCastException |
TryCast |
僅限參考型別 | 一個類型必須繼承自 或實作另一種類型 | 傳回 Nothing |
範例
下列範例示範如何使用 TryCast。
Function PrintTypeCode(ByVal obj As Object) As String
Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
If objAsConvertible Is Nothing Then
Return obj.ToString() & " does not implement IConvertible"
Else
Return "Type code is " & objAsConvertible.GetTypeCode()
End If
End Function