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

継承または実装に基づいて、型変換操作をについて説明します。Introduces a type conversion operation based on inheritance or implementation.


DirectCast 変換で多少を提供できるように、ランタイム ヘルパー ルーチンに比べてパフォーマンスが向上する Visual Basic を使用しませんCTypeとの間のデータ型を変換するときにObjectします。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.

使用する、DirectCastキーワードを使用するのと同様、 CType FunctionTryCast 演算子キーワード。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. つまり 1 つの型が継承または他の実装する必要があります。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.

キーワードKeyword データの種類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 スローされます。 InvalidCastExceptionThrows InvalidCastException
DirectCast すべてのデータ型Any data types 1 つの型を継承またはその他の型を実装する必要があります。One type must inherit from or implement the other type スローされます。 InvalidCastExceptionThrows InvalidCastException
TryCast 演算子TryCast Operator 参照型のみReference types only 1 つの型を継承またはその他の型を実装する必要があります。One type must inherit from or implement the other type 返しますNothingReturns Nothing


次の例では、2 つの用途のDirectCast、いずれかのいずれかの実行時に失敗するが成功するとします。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)

前の例では、実行時の入力のqDoubleします。In the preceding example, the run-time type of q is Double. CType 成功Doubleに変換できるIntegerします。CType succeeds because Double can be converted to Integer. ただし、最初のDirectCast実行時の型であるために、実行時に失敗Double継承関係を持たないInteger変換が存在する場合でも、します。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を入力するControl、元のForm継承します。The second DirectCast succeeds because it converts from type Form to type Control, from which Form inherits.

関連項目See also