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