TryCast 演算子 (Visual Basic)

例外をスローしない型変換操作を導入します。

Remarks

試行された変換が失敗した場合、CTypeDirectCast はどちらも InvalidCastException エラーをスローします。 これは、アプリケーションのパフォーマンスに悪影響を与える可能性があります。 TryCastNothing を返します。そのため、発生する可能性がある例外を処理する必要はなく、代わりに、返された結果を Nothing に対してテストすることのみ必要です。

TryCast キーワードは、CType 関数および DirectCast 演算子キーワードを使用するのと同じ方法で使用します。 1 番目の引数として式を指定し、2 番目の引数としてその式の変換先の型を指定します。 TryCast は、クラスやインターフェイスなどの参照型に対してのみ動作します。 2 つの型間の継承関係または実装関係が必要になります。 つまり、一方の型が他方の型を継承または実装する必要があります。

エラーと障害

TryCast で、継承関係または実装関係が存在しないことが検出されると、コンパイラ エラーが発生します。 ただし、コンパイラ エラーが発生しない場合でも、変換が正常に行われるとは限りません。 目的の変換が縮小変換の場合、実行時に失敗する可能性があります。 これが発生すると、TryCastNothing を返します。

変換キーワード

型変換のキーワードの比較を次に示します。

キーワード データの種類 引数の関係 ランタイム エラー
CType 関数 任意のデータ型 2 つのデータ型の間で拡大変換または縮小変換を定義する必要があります 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

関連項目