式を指定したデータ型、オブジェクト、構造体、クラス、またはインターフェイスに明示的に変換した結果を返します。
構文
CType(expression, typename)
部品
expression
任意の有効な式。
expression
の値がtypename
で許可されている範囲外の場合、Visual Basic は例外をスローします。
typename
Dim
ステートメントのAs
句内で有効な式、つまり、任意のデータ型、オブジェクト、構造体、クラス、またはインターフェイスの名前。
注釈
ヒント
次の関数を使用して型変換を実行することもできます。
- 特定のデータ型への変換を実行する
CByte
、CDbl
、CInt
などの型変換関数。 詳細については、「 データ型変換関数」を参照してください。 -
DirectCast 演算子 または TryCast 演算子。 これらの演算子では、1 つの型が他の型を継承または実装する必要があります。
Object
データ型との間で変換する場合、CType
よりもパフォーマンスが若干向上します。
CType
はインラインでコンパイルされます。つまり、変換コードは式を評価するコードの一部です。 変換を実行するプロシージャが呼び出されないため、コードの実行速度が速くなる場合があります。
expression
からtypename
への変換が定義されていない場合 (たとえば、Integer
からDate
)、Visual Basic はコンパイル時のエラー メッセージを表示します。
実行時に変換が失敗すると、適切な例外がスローされます。 縮小変換が失敗した場合、 OverflowException が最も一般的な結果になります。 変換が未定義の場合は、 InvalidCastException がスローされます。 たとえば、 expression
が Object
型で、実行時の型が typename
に変換されていない場合に発生する可能性があります。
expression
またはtypename
のデータ型が定義したクラスまたは構造体である場合は、そのクラスまたは構造体のCType
を変換演算子として定義できます。 これにより、 CType
は オーバーロードされた演算子として機能します。 これを行う場合は、スロー可能な例外を含め、クラスまたは構造体との間の変換の動作を制御できます。
変換キーワード
型変換キーワードの比較は次のとおりです。
キーワード | データ型 | 引数のリレーションシップ | 実行時エラー |
---|---|---|---|
CType |
任意のデータ型 | 拡大変換または縮小変換は、2 つのデータ型の間で定義する必要があります | スロー InvalidCastException |
DirectCast 演算子 | 任意のデータ型 | 一方の型は、他の型を継承または実装する必要があります | スロー InvalidCastException |
TryCast | 参照型のみ | 一方の型は、他の型を継承または実装する必要があります | Nothing を返します 。 |
オーバーロード
CType
演算子は、コードの外部で定義されているクラスまたは構造体でオーバーロードすることもできます。 コードがそのようなクラスまたは構造体との間で変換される場合は、その CType
演算子の動作を理解していることを確認してください。 詳細については、「 演算子プロシージャ」を参照してください。
動的オブジェクトの変換
動的オブジェクトの型変換は、 TryConvert メソッドまたは BindConvert メソッドを使用するユーザー定義の動的変換によって実行されます。 動的オブジェクトを使用している場合は、 CTypeDynamic メソッドを使用して動的オブジェクトを変換します。
例
次の例では、 CType
関数を使用して、式を Single
データ型に変換します。
Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)
その他の例については、「 暗黙的な変換と明示的な変換」を参照してください。
こちらも参照ください
.NET