TryCast 演算子 (Visual Basic)TryCast Operator (Visual Basic)

例外をスローしない型変換操作を導入します。Introduces a type conversion operation that does not throw an exception.


試行された変換が失敗した場合、CTypeDirectCast はどちらも InvalidCastException エラーをスローします。If an attempted conversion fails, CType and DirectCast both throw an InvalidCastException error. これは、アプリケーションのパフォーマンスに悪影響を与える可能性があります。This can adversely affect the performance of your application. TryCastNothing を返します。そのため、発生する可能性がある例外を処理する必要はなく、代わりに、返された結果を Nothing に対してテストすることのみ必要です。TryCast returns Nothing, so that instead of having to handle a possible exception, you need only test the returned result against Nothing.

TryCast キーワードは、CType 関数および DirectCast 演算子キーワードを使用するのと同じ方法で使用します。You use the TryCast keyword the same way you use the CType Function and the DirectCast Operator keyword. 1 番目の引数として式を指定し、2 番目の引数としてその式の変換先の型を指定します。You supply an expression as the first argument and a type to convert it to as the second argument. TryCast は、クラスやインターフェイスなどの参照型に対してのみ動作します。TryCast operates only on reference types, such as classes and interfaces. 2 つの型間の継承関係または実装関係が必要になります。It requires an inheritance or implementation relationship between the two types. つまり、一方の型が他方の型を継承または実装する必要があります。This means that one type must inherit from or implement the other.

エラーと障害Errors and Failures

TryCast で、継承関係または実装関係が存在しないことが検出されると、コンパイラ エラーが発生します。TryCast generates a compiler error if it detects that no inheritance or implementation relationship exists. ただし、コンパイラ エラーが発生しない場合でも、変換が正常に行われるとは限りません。But the lack of a compiler error does not guarantee a successful conversion. 目的の変換が縮小変換の場合、実行時に失敗する可能性があります。If the desired conversion is narrowing, it could fail at run time. これが発生すると、TryCastNothing を返します。If this happens, TryCast returns Nothing.

変換キーワードConversion Keywords

型変換のキーワードの比較を次に示します。A comparison of the type conversion keywords is as follows.

キーワードKeyword データの種類Data types 引数の関係Argument relationship ランタイム エラーRun-time failure
CType 関数CType Function 任意のデータ型Any data types 2 つのデータ型の間で拡大変換または縮小変換を定義する必要がありますWidening or narrowing conversion must be defined between the two data types InvalidCastException がスローされますThrows InvalidCastException
DirectCast 演算子DirectCast Operator 任意のデータ型Any data types 一方の型が他方の型を継承または実装する必要がありますOne type must inherit from or implement the other type InvalidCastException がスローされますThrows InvalidCastException
TryCast 参照型のみReference types only 一方の型が他方の型を継承または実装する必要がありますOne type must inherit from or implement the other type Nothing が返されますReturns Nothing


次の例は、TryCast を使用する方法を示しています。The following example shows how to use 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"
        Return "Type code is " & objAsConvertible.GetTypeCode()
    End If
End Function

関連項目See also