Share via


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)

轉換關鍵字

型別轉換關鍵字的比較如下。

關鍵字

資料型別

引數關聯性

執行階段失敗

CType 函式 (Visual Basic)

任何資料型別

必須在這兩個資料型別間定義擴展或縮小轉換

擲回 InvalidCastException

DirectCast 運算子 (Visual Basic)

任何資料型別

其中一個型別必須繼承自另一個型別或實作另一個型別

擲回 InvalidCastException

TryCast

僅限參考型別 (Reference Type)

其中一個型別必須繼承自另一個型別或實作另一個型別

傳回 Nothing (Visual Basic)

範例

下列範例顯示如何使用 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

請參閱

概念

擴展和縮小轉換 (Visual Basic)

隱含和明確轉換 (Visual Basic)