継承または実装に基づく型変換操作を導入します。
注釈
DirectCastは変換に Visual Basic ランタイム ヘルパー ルーチンを使用しないため、データ型CTypeとの間で変換する場合にObjectよりもパフォーマンスが若干向上します。
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に変換できるため、成功します。 ただし、変換が存在する場合でも、DirectCastの実行時の型とDoubleとの継承関係がないため、最初のIntegerは実行時に失敗します。 2 つ目の DirectCast は、型 Form から型 Control に変換され、そこから Form 継承されるため成功します。
こちらも参照ください
.NET