次の方法で共有


DirectCast 演算子 (Visual Basic)

継承または実装に基づく型変換操作を導入します。

注釈

DirectCastは変換に Visual Basic ランタイム ヘルパー ルーチンを使用しないため、データ型Objectとの間で変換する場合にCTypeよりもパフォーマンスが若干向上します。

CType 関数TryCast Operator キーワードの使用方法と同様に、DirectCast キーワードを使用します。 最初の引数として式を指定し、2 番目の引数として変換する型を指定します。 DirectCast には、2 つの引数のデータ型間の継承または実装リレーションシップが必要です。 つまり、一方の型は、もう一方の型を継承または実装する必要があります。

エラーとエラー

DirectCast は、継承または実装リレーションシップが存在しないことを検出した場合にコンパイラ エラーを生成します。 ただし、コンパイラ エラーがないと、変換が成功するとは限りません。 目的の変換が縮小されている場合は、実行時に失敗する可能性があります。 この場合、ランタイムは InvalidCastException エラーをスローします。

変換キーワード

型変換キーワードの比較は次のとおりです。

キーワード データ型 引数のリレーションシップ 実行時エラー
CType 関数 任意のデータ型 拡大変換または縮小変換は、2 つのデータ型の間で定義する必要があります スロー InvalidCastException
DirectCast 任意のデータ型 一方の型は、他の型を継承または実装する必要があります スロー InvalidCastException
TryCast 演算子 参照型のみ 一方の型は、他の型を継承または実装する必要があります Nothing を返します

次の例では、 DirectCastの 2 つの使用方法を示します。1 つは実行時に失敗し、1 つは成功します。

Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

前の例では、 q の実行時の型が DoubleCType DoubleIntegerに変換できるため、成功します。 ただし、変換が存在する場合でも、Doubleの実行時の型とIntegerとの継承関係がないため、最初のDirectCastは実行時に失敗します。 2 つ目の DirectCast は、型 Form から型 Control に変換され、そこから Form 継承されるため成功します。

こちらも参照ください