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