TryCast 运算符 (Visual Basic)

引入不引发异常的类型转换操作。

备注

如果尝试转换失败,则 CType 和 DirectCast 都会引发 InvalidCastException 错误。 这将给应用程序的性能造成负面影响。 TryCast 返回 Nothing (Visual Basic),因此只需测试返回的结果是否为 Nothing,而无需处理可能产生的异常。

使用 TryCast 关键字的方法与使用 CType 函数 (Visual Basic)DirectCast 运算符 (Visual Basic) 关键字的方法相同。 提供一个表达式作为第一个参数,并提供要将该表达式转化为的类型作为第二个参数。 TryCast 只处理引用类型,如类和接口。 它要求这两种类型之间的关系为继承或实现。 这意味着一个类型必须继承自或实现另一个类型。

错误和失败

如果 TryCast 检测到不存在任何继承或实现关系,它将生成一个编译器错误。 但是不出现编译器错误并不能保证转换成功。 如果需要的转换为收缩转换,它可能在运行时失败。 如果发生这种情况,TryCast 返回 Nothing (Visual Basic)

转换关键字

以下是类型转换关键字的对比。

关键字

数据类型

参数关系

运行时失败

CType 函数 (Visual Basic)

任何数据类型

必须在两种数据类型之间定义扩大转换或收缩转换

引发 InvalidCastException

DirectCast 运算符 (Visual Basic)

任何数据类型

一个类型必须继承自或者实现另一个类型

引发 InvalidCastException

TryCast

仅引用类型

一个类型必须继承自或者实现另一个类型

返回 Nothing (Visual Basic)

示例

下面的示例显示如何使用 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

请参见

概念

扩大转换和收缩转换 (Visual Basic)

隐式转换和显式转换 (Visual Basic)