返回将表达式显式转换为指定数据类型、对象、结构、类或接口的结果。
语法
CType(expression, typename)
部件
expression
任何有效的表达式。 如果该值 expression
超出允许 typename
的范围,Visual Basic 将引发异常。
typename
语句中Dim
子句中As
合法的任何表达式,即任何数据类型、对象、结构、类或接口的名称。
注解
小窍门
还可以使用以下函数执行类型转换:
- 类型转换函数,例如
CByte
,CDbl
执行CInt
到特定数据类型的转换。 有关详细信息,请参阅 Type Conversion Functions(类型转换函数)。 -
DirectCast 运算符 或 TryCast 运算符。 这些运算符要求一种类型继承或实现另一种类型。 它们的性能比
CType
转换到数据类型和从Object
数据类型转换时的性能要好一些。
CType
是内联编译的,这意味着转换代码是计算表达式的代码的一部分。 在某些情况下,代码运行速度更快,因为不会调用任何过程来执行转换。
如果未定义从 expression
到typename
的Integer
Date
转换,则 Visual Basic 将显示编译时错误消息。
如果在运行时转换失败,则会引发相应的异常。 如果缩小转换失败,最常见的结果就是一个 OverflowException 。 如果未定义转换,则会 InvalidCastException 引发转换。 例如,如果 expression
类型及其运行时类型 Object
没有转换到 typename
,则可能发生此情况。
如果已定义的类或结构数据类型expression
typename
,则可以将该类或结构定义为CType
转换运算符。
CType
这使得充当重载运算符。 如果执行此作,则可以控制对类或结构的转换行为,包括可以引发的异常。
转换关键字
类型转换关键字的比较如下所示。
关键字 | 数据类型 | 参数关系 | 运行时失败 |
---|---|---|---|
CType |
任何数据类型 | 必须在两种数据类型之间定义扩大或缩小转换 | 抛出 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)
有关其他示例,请参阅 隐式和显式转换。