CType 函数 (Visual Basic)

返回将表达式显式转换为指定数据类型、对象、结构、类或接口的结果。

语法

CType(expression, typename)

部件

expression 任何有效的表达式。 如果该值 expression 超出允许 typename的范围,Visual Basic 将引发异常。

typename语句中Dim子句中As合法的任何表达式,即任何数据类型、对象、结构、类或接口的名称。

注解

小窍门

还可以使用以下函数执行类型转换:

  • 类型转换函数,例如 CByteCDbl执行 CInt 到特定数据类型的转换。 有关详细信息,请参阅 Type Conversion Functions(类型转换函数)。
  • DirectCast 运算符TryCast 运算符。 这些运算符要求一种类型继承或实现另一种类型。 它们的性能比 CType 转换到数据类型和从 Object 数据类型转换时的性能要好一些。

CType 是内联编译的,这意味着转换代码是计算表达式的代码的一部分。 在某些情况下,代码运行速度更快,因为不会调用任何过程来执行转换。

如果未定义从 expressiontypenameIntegerDate转换,则 Visual Basic 将显示编译时错误消息。

如果在运行时转换失败,则会引发相应的异常。 如果缩小转换失败,最常见的结果就是一个 OverflowException 。 如果未定义转换,则会 InvalidCastException 引发转换。 例如,如果 expression 类型及其运行时类型 Object 没有转换到 typename,则可能发生此情况。

如果已定义的类或结构数据类型expressiontypename,则可以将该类或结构定义为CType转换运算符。 CType这使得充当重载运算符。 如果执行此作,则可以控制对类或结构的转换行为,包括可以引发的异常。

转换关键字

类型转换关键字的比较如下所示。

关键字 数据类型 参数关系 运行时失败
CType 任何数据类型 必须在两种数据类型之间定义扩大或缩小转换 抛出 InvalidCastException
DirectCast 运算符 任何数据类型 一种类型必须继承或实现另一种类型 抛出 InvalidCastException
TryCast 仅引用类型 一种类型必须继承或实现另一种类型 返回 Nothing

重载

CType还可以在代码外部定义的类或结构上重载运算符。 如果代码转换为此类或结构或结构或结构,请确保了解其 CType 运算符的行为。 有关详细信息,请参阅 运算符过程

转换动态对象

动态对象的类型转换由使用 TryConvertBindConvert 方法的用户定义动态转换执行。 如果使用动态对象,请使用 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)

有关其他示例,请参阅 隐式和显式转换

另请参阅