継承または実装に基づく型変換操作を導入します。
注釈
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
の実行時の型が Double
。
CType
Double
をInteger
に変換できるため、成功します。 ただし、変換が存在する場合でも、Double
の実行時の型とInteger
との継承関係がないため、最初のDirectCast
は実行時に失敗します。 2 つ目の DirectCast
は、型 Form から型 Control に変換され、そこから Form 継承されるため成功します。
こちらも参照ください
.NET