TryCast 运算符 (Visual Basic)
引入不引发异常的类型转换操作。
注解
如果尝试的转换失败,CType
和 DirectCast
都会引发 InvalidCastException 错误。 这可能会对应用程序性能产生不利影响。 TryCast
返回 Nothing,因此你不必处理可能的异常,而只需针对 Nothing
测试返回的结果。
使用 TryCast
关键字的方式与使用 CType 函数和 DirectCast 运算符关键字的方式相同。 提供一个表达式作为第一个参数,并将一个类型转换为第二个参数。 TryCast
只对引用类型(例如类和接口)执行操作。 它需要两种类型之间的继承或实现关系。 这意味着一种类型必须从另一种类型继承或实现另一种类型。
错误和故障
如果 TryCast
检测到不存在继承或实现关系,则会生成编译器错误。 但是没有编译器错误并不能保证转换成功。 如果所需的转换是收缩转换,则其可能会在运行时失败。 如果发生这种情况,TryCast
返回 Nothing。
转换关键字
下面是类型转换关键字的对比。
关键字 | 数据类型 | 参数关系 | 运行时失败 |
---|---|---|---|
CType Function | 任何数据类型 | 必须在这两种数据类型之间定义扩大转换或收缩转换 | 引发 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