引入不引发异常的类型转换作。
注解
如果尝试的转换失败, CType
并且 DirectCast
两者都引发错误 InvalidCastException 。 这可能会影响应用程序的性能。
TryCast
返回 Nothing,因此无需处理可能的异常,只需测试 Nothing
返回的结果。
TryCast
使用关键字的方式与使用 CType 函数和 DirectCast 运算符关键字的方式相同。 提供表达式作为第一个参数,并提供一个类型,以将其转换为第二个参数。
TryCast
仅适用于引用类型,例如类和接口。 它需要这两种类型之间的继承或实现关系。 这意味着一种类型必须继承或实现另一种类型。
错误和失败
TryCast
如果检测到不存在继承或实现关系,则生成编译器错误。 但是缺少编译器错误不能保证成功转换。 如果所需的转换缩小,则它在运行时可能会失败。 如果发生这种情况, TryCast
则返回 Nothing。
转换关键字
类型转换关键字的比较如下所示。
关键字 | 数据类型 | 参数关系 | 运行时失败 |
---|---|---|---|
CType 函数 | 任何数据类型 | 必须在两种数据类型之间定义扩大或缩小转换 | 抛出 InvalidCastException |
DirectCast 运算符 | 任何数据类型 | 一种类型必须继承或实现另一种类型 | 抛出 InvalidCastException |
TryCast |
仅引用类型 | 一种类型必须继承或实现另一种类型 | 返回 Nothing |
示例:
以下示例演示如何使用 TryCast
。
Function PrintTypeCode(ByVal obj As Object) As String
Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
If objAsConvertible Is Nothing Then
Return obj.ToString() & " does not implement IConvertible"
Else
Return "Type code is " & objAsConvertible.GetTypeCode()
End If
End Function