CType 関数 は 2 つの引数について実行されます。最初の引数は変換対象の式であり、2 番目の引数は変換先のデータ型またはオブジェクト クラスです。最初の引数は、型ではなく、式である必要があることに注意してください。
CType はインライン関数です。つまり、変換を行うコードはコンパイルによって生成されます。多くの場合、このコードに関数呼び出しは含まれていません。これにより、パフォーマンスが向上します。
CType とその他の型変換キーワードとの比較については、「DirectCast」および「TryCast」を参照してください。
基本型
次の例は CType の使い方を示しています。
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
複合型
CType を使用して、値を複合データ型および基本型に変換できます。また、次の例のように、オブジェクト クラスをそのインターフェイスの型に強制的に変換することもできます。
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)
配列型
CType は、次の例のように配列データ型を変換することもできます。
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If
使用例を含む詳細については、「配列の変換」を参照してください。
CType を定義する型
独自に定義したクラスや構造体に対して CType を定義できます。これによって、独自のクラスや構造体の型と別の型の間で値を相互に変換できます。使用例を含む詳細については、「方法 : 変換演算子を定義する」を参照してください。
メモ : |
|---|
変換キーワードと共に使用する値は、変換先のデータ型において有効な値である必要があります。有効でない場合はエラーが発生します。たとえば、長整数型 (Long) を整数型 (Integer) に変換する場合は、その長整数型 (Long) の値が整数型 (Integer) の有効範囲内に含まれている必要があります。 |
注意 : |
|---|
あるクラス型から別のクラス型に変換する CType を指定する場合、変換先の型が変換元の型から派生した型でなければ、実行時に失敗します。そのようなエラーが発生すると、InvalidCastException 例外がスローされます。 |
ただし、型の一方が独自に定義した構造体またはクラスであり、その構造体またはクラスに CType が定義してある場合、この CType の要件を満たしていれば変換は正常に実行されます。方法 : 変換演算子を定義する を参照してください。
明示的な型変換は、ある式から指定のデータ型またはオブジェクト クラスへのキャストとも呼ばれます。