CType 関数 (Visual Basic)

任意の式を、指定されたデータ型、オブジェクト、構造体、クラス、またはインターフェイスに明示的に変換し、その結果を返します。

構文

CType(expression, typename)

指定項目

expression 任意の有効な式。 expression の値が typename で許可されている範囲内でない場合、Visual Basic が例外をスローします。

typenameDim ステートメントの As 句内の有効な任意の式。つまり、任意のデータ型、オブジェクト、構造体、クラス、またはインターフェイスの名前。

Remarks

ヒント

次の関数を使用して型変換を実行することもできます。

  • 特定のデータ型への変換を実行する、CByteCDblCInt などの型変換関数。 詳細については、「 データ型変換関数」を参照してください。
  • DirectCast 演算子または TryCast 演算子。 これらの演算子では、一方の型が他方の型を継承または実装している必要があります。 これらの場合は、CType データ型との間で変換を行うときに、Object よりもいくらかパフォーマンスが向上します。

CType は、インラインでコンパイルされます。つまり、変換コードは、式を評価するコードに含まれます。 場合によっては、変換を実行するプロシージャが呼び出されないため、コードの実行速度が速くなります。

expression から typename など、Integer から Date への変換が定義されていない場合、Visual Basic はコンパイル時のエラー メッセージを表示します。

実行時に変換が失敗すると、適切な例外がスローされます。 縮小変換が失敗した場合、最もよくスローされるのは OverflowException です。 変換が定義されていない場合、InvalidCastException がスローされます。 たとえば、これは、expressionObject 型で、実行時の型が typename への変換を持たない場合に起こります。

expression または typename のデータ型が、定義したクラスまたは構造体の場合、そのクラスまたは構造体に CType を変換演算子として定義できます。 これにより、CTypeオーバーロードされた演算子として機能します。 この方法を利用する場合、定義したクラスまたは構造体からの変換、またはこのクラスまたは構造体への変換の動作 (スローする例外など) を制御できます。

変換キーワード

型変換のキーワードの比較を次に示します。

キーワード データの種類 引数の関係 ランタイム エラー
CType 任意のデータ型 2 つのデータ型の間で拡大変換または縮小変換を定義する必要があります InvalidCastException がスローされます
DirectCast 演算子 任意のデータ型 一方の型が他方の型を継承または実装する必要があります InvalidCastException をスローする
TryCast 参照型のみ 一方の型が他方の型を継承または実装する必要があります Nothing が返されます

オーバーロード

CType 演算子も、コードの外部で定義されたクラスまたは構造体でオーバーロードできます。 このようなクラスまたは構造体からの変換、またはこのクラスまたは構造体への変換を行う場合は、その CType 演算子の動作を確認してください。 詳細については、「 Operator Procedures」を参照してください。

動的オブジェクトの変換

動的オブジェクトの型変換は、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)

その他の例については、「暗黙的な変換と明示的な変換」を参照してください。

関連項目