TryCast 運算子 (Visual Basic)
引入不會擲回例外狀況的型別轉換作業。
備註
如果轉換嘗試失敗,CType 和 DirectCast 兩者會擲回 InvalidCastException 錯誤。 這樣可能會影響應用程式的效能。 TryCast 會傳回 Nothing (Visual Basic),如此您就不需處理可能的例外狀況,只需針對 Nothing 測試傳回的結果。
使用 TryCast 關鍵字的方式與使用 CType 函式 (Visual Basic) 和 DirectCast 運算子 (Visual Basic) 關鍵字相同。 您提供的第一個引數是運算式,第二個引數則是用來轉換它的型別。 TryCast 只能在參考型別上操作,例如類別和介面。 它需要兩個型別之間的繼承或實作 (Implementation) 關係。 這表示其中一個型別必須繼承自另一個型別或實作另一個型別。
錯誤和失敗
如果 TryCast 未偵測到繼承或實作關聯性,則會產生編譯器錯誤。 但沒有編譯器錯誤並不保證轉換成功。 如果正在縮小所要的轉換,則在執行階段可能會失敗。 若是這種情況,TryCast 會傳回 Nothing (Visual Basic)。
轉換關鍵字
型別轉換關鍵字的比較如下。
關鍵字 |
資料型別 |
引數關聯性 |
執行階段失敗 |
任何資料型別 |
必須在這兩個資料型別間定義擴展或縮小轉換 |
||
任何資料型別 |
其中一個型別必須繼承自另一個型別或實作另一個型別 |
||
TryCast |
僅限參考型別 (Reference Type) |
其中一個型別必須繼承自另一個型別或實作另一個型別 |
範例
下列範例顯示如何使用 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