引入不引发异常的类型转换作。
注解
如果尝试的转换失败, 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