CType 関数 (Visual Basic)
任意の式を、指定されたデータ型、オブジェクト、構造体、クラス、またはインターフェイスに明示的に変換し、その結果を返します。
構文
CType(expression, typename)
指定項目
expression
任意の有効な式。 expression
の値が typename
で許可されている範囲内でない場合、Visual Basic が例外をスローします。
typename
Dim
ステートメントの As
句内の有効な任意の式。つまり、任意のデータ型、オブジェクト、構造体、クラス、またはインターフェイスの名前。
Remarks
ヒント
次の関数を使用して型変換を実行することもできます。
- 特定のデータ型への変換を実行する、
CByte
、CDbl
、CInt
などの型変換関数。 詳細については、「 データ型変換関数」を参照してください。 - DirectCast 演算子または TryCast 演算子。 これらの演算子では、一方の型が他方の型を継承または実装している必要があります。 これらの場合は、
CType
データ型との間で変換を行うときに、Object
よりもいくらかパフォーマンスが向上します。
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
演算子の動作を確認してください。 詳細については、「 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)
その他の例については、「暗黙的な変換と明示的な変換」を参照してください。
関連項目
.NET