CType 関数 (Visual Basic)CType Function (Visual Basic)

任意の式を、指定されたデータ型、オブジェクト、構造体、クラス、またはインターフェイスに明示的に変換し、その結果を返します。Returns the result of explicitly converting an expression to a specified data type, object, structure, class, or interface.


CType(expression, typename)


expression 任意の有効な式。expression Any valid expression. expression の値が typename で許可されている範囲内でない場合、Visual Basic が例外をスローします。If the value of expression is outside the range allowed by typename, Visual Basic throws an exception.

typename Dim ステートメントの As 句内の有効な任意の式。つまり、任意のデータ型、オブジェクト、構造体、クラス、またはインターフェイスの名前。typename Any expression that is legal within an As clause in a Dim statement, that is, the name of any data type, object, structure, class, or interface.



次の関数を使用して型変換を実行することもできます。You can also use the following functions to perform a type conversion:

  • 特定のデータ型への変換を実行する、CByteCDblCInt などの型変換関数。Type conversion functions such as CByte, CDbl, and CInt that perform a conversion to a specific data type. 詳細については、「 データ型変換関数」を参照してください。For more information, see Type Conversion Functions.
  • DirectCast 演算子または TryCast 演算子DirectCast Operator or TryCast Operator. これらの演算子では、一方の型が他方の型を継承または実装している必要があります。These operators require that one type inherit from or implement the other type. これらの場合は、CType データ型との間で変換を行うときに、Object よりもいくらかパフォーマンスが向上します。They can provide somewhat better performance than CType when converting to and from the Object data type.

CType は、インラインでコンパイルされます。つまり、変換コードは、式を評価するコードに含まれます。CType is compiled inline, which means that the conversion code is part of the code that evaluates the expression. 場合によっては、変換を実行するプロシージャが呼び出されないため、コードの実行速度が速くなります。In some cases, the code runs faster because no procedures are called to perform the conversion.

expression から typename など、Integer から Date への変換が定義されていない場合、Visual Basic はコンパイル時のエラー メッセージを表示します。If no conversion is defined from expression to typename (for example, from Integer to Date), Visual Basic displays a compile-time error message.

実行時に変換が失敗すると、適切な例外がスローされます。If a conversion fails at run time, the appropriate exception is thrown. 縮小変換が失敗した場合、最もよくスローされるのは OverflowException です。If a narrowing conversion fails, an OverflowException is the most common result. 変換が定義されていない場合、InvalidCastException がスローされます。If the conversion is undefined, an InvalidCastException in thrown. たとえば、これは、expressionObject 型で、実行時の型が typename への変換を持たない場合に起こります。For example, this can happen if expression is of type Object and its run-time type has no conversion to typename.

expression または typename のデータ型が、定義したクラスまたは構造体の場合、そのクラスまたは構造体に CType を変換演算子として定義できます。If the data type of expression or typename is a class or structure you've defined, you can define CType on that class or structure as a conversion operator. これにより、CTypeオーバーロードされた演算子として機能します。This makes CType act as an overloaded operator. この方法を利用する場合、定義したクラスまたは構造体からの変換、またはこのクラスまたは構造体への変換の動作 (スローする例外など) を制御できます。If you do this, you can control the behavior of conversions to and from your class or structure, including the exceptions that can be thrown.


CType 演算子も、コードの外部で定義されたクラスまたは構造体でオーバーロードできます。The CType operator can also be overloaded on a class or structure defined outside your code. このようなクラスまたは構造体からの変換、またはこのクラスまたは構造体への変換を行う場合は、その CType 演算子の動作を確認してください。If your code converts to or from such a class or structure, be sure you understand the behavior of its CType operator. 詳細については、「 Operator Procedures」を参照してください。For more information, see Operator Procedures.

動的オブジェクトの変換Converting Dynamic Objects

動的オブジェクトの型変換は、TryConvert メソッドまたは BindConvert メソッドを使用するユーザー定義の動的変換によって実行されます。Type conversions of dynamic objects are performed by user-defined dynamic conversions that use the TryConvert or BindConvert methods. 動的オブジェクトを使用する場合は、CTypeDynamic メソッドを使用して動的オブジェクトを変換します。If you're working with dynamic objects, use the CTypeDynamic method to convert the dynamic object.


CType 関数を使用して任意の式を Single データ型に変換する例を次に示します。The following example uses the CType function to convert an expression to the Single data type.

Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)

その他の例については、「暗黙的な変換と明示的な変換」を参照してください。For additional examples, see Implicit and Explicit Conversions.

関連項目See also