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

継承または実装に基づく型変換操作を導入します。Introduces a type conversion operation based on inheritance or implementation.

コメントRemarks

DirectCast では、変換に Visual Basic ランタイムヘルパールーチンを使用しないため、データ型 Objectとの間で変換を行う場合は CType よりも多少優れたパフォーマンスが得られます。DirectCast does not use the Visual Basic run-time helper routines for conversion, so it can provide somewhat better performance than CType when converting to and from data type Object.

CType 関数および TryCast 演算子キーワードの使用方法と同様に、DirectCast キーワードを使用します。You use the DirectCast keyword similar to the way you use the CType Function and the TryCast Operator keyword. 最初の引数として式を指定し、2 番目の引数として変換する型を指定します。You supply an expression as the first argument and a type to convert it to as the second argument. DirectCast には、2 つの引数のデータ型間の継承または実装関係が必要です。DirectCast requires an inheritance or implementation relationship between the data types of the two arguments. これは、一方の型が他の型を継承または実装する必要があることを意味します。This means that one type must inherit from or implement the other.

エラーとエラーErrors and Failures

DirectCast は、継承または実装関係が存在しないことを検出すると、コンパイラエラーを生成します。DirectCast 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. これが発生すると、ランタイムは InvalidCastException エラーをスローします。If this happens, the runtime throws an InvalidCastException error.

変換キーワードConversion Keywords

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

KeywordKeyword データの種類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 任意のデータ型Any data types 一方の型は、他の型を継承するか、他の型を実装する必要がありますOne type must inherit from or implement the other type InvalidCastException をスローThrows InvalidCastException
TryCast 演算子TryCast Operator 参照型のみReference types only 一方の型は、他の型を継承するか、他の型を実装する必要がありますOne type must inherit from or implement the other type Nothing を返すReturns Nothing

Example

次の例は、DirectCastの2つの使用方法を示しています。1つは実行時に失敗し、もう1つは成功します。The following example demonstrates two uses of DirectCast, one that fails at run time and one that succeeds.

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になっています。In the preceding example, the run-time type of q is Double. DoubleIntegerに変換できるため、CType は成功します。CType succeeds because Double can be converted to Integer. ただし、変換が存在する場合でも、Double の実行時の型には Integerとの継承関係がないため、実行時に最初の DirectCast は失敗します。However, the first DirectCast fails at run time because the run-time type of Double has no inheritance relationship with Integer, even though a conversion exists. 2番目の DirectCast は、Form が継承する型 Form から型 Controlに変換するため、成功します。The second DirectCast succeeds because it converts from type Form to type Control, from which Form inherits.

参照See also