次の方法で共有


CType 関数 (Visual Basic)

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

構文

CType(expression, typename)

部品

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

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

注釈

ヒント

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

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

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

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

実行時に変換が失敗すると、適切な例外がスローされます。 縮小変換が失敗した場合、 OverflowException が最も一般的な結果になります。 変換が未定義の場合は、 InvalidCastException がスローされます。 たとえば、 expressionObject 型で、実行時の型が 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)

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

こちらも参照ください