TryCast
更新 : 2007 年 11 月
例外をスローしない型変換演算を開始します。
解説
変換が失敗した場合、CType および DirectCast の両方から InvalidCastException エラーが発生します。これは、アプリケーションのパフォーマンスに悪影響を与える可能性があります。TryCast は、例外を処理するのではなく、返された値が Nothing かどうかをテストするだけで済むように Nothing (Visual Basic) を返します。
TryCast キーワードは、CType 関数 や DirectCast キーワードと同じように使用します。最初の引数は式、2 つ目の引数は変換する型です。TryCast は、クラスやインターフェイスなどの参照型のみを扱います。2 つの型の間には、継承または実装の関係が必要です。つまり、一方の型が他方を継承しているか、実装している必要があります。
エラー
継承も実装もないことを確認した場合、TryCast はコンパイラ エラーを生成します。コンパイラ エラーが発生しなくても、変換が成功したとは限りません。実行する変換が縮小変換である場合、実行時に失敗する可能性があります。この場合、TryCast は Nothing (Visual Basic) を返します。
型変換のキーワード
型変換のキーワードを比較したものを次に示します。
キーワード |
データ型 |
引数の関係 |
実行時のエラー |
---|---|---|---|
Any 型 |
2 つのデータ型の間で拡大変換または縮小変換を定義する必要があります。 |
InvalidCastException をスロー |
|
Any 型 |
一方の型が他方を継承または実装していることが必要 |
InvalidCastException をスロー |
|
TryCast |
参照型のみ |
一方の型が他方を継承または実装していることが必要 |
使用例
次の例は、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