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