TryCast 运算符 (Visual Basic)

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

备注

如果尝试的转换失败 CType ,并且 DirectCast 两者都会引发 InvalidCastException 错误。 这可能会对应用程序的性能造成负面影响。 TryCast 返回 Nothing,因此,无需处理可能的异常,只需针对 测试返回的结果 Nothing

使用 关键字 TryCast 的方式与使用 CType 函数DirectCast 运算符关键字的方式 相同。 提供一个表达式作为第一个参数,提供一个类型以将其转换为 作为第二个参数。 TryCast 仅对引用类型(如类和接口)进行操作。 它需要两种类型之间的继承或实现关系。 这意味着一种类型必须继承自或实现另一种类型。

错误和失败

TryCast 如果检测到不存在继承或实现关系,则 生成编译器错误。 但是,缺少编译器错误并不保证转换成功。 如果所需的转换正在收缩,则可能会运行时失败。 如果发生这种情况,则 TryCast 返回Nothing 。

转换关键字

类型转换关键字的比较如下所示。

关键字 数据类型 参数关系 运行时失败
CType Function 任何数据类型 必须在两种数据类型之间定义扩大或收缩转换 抛出 InvalidCastException
DirectCast 运算符 任何数据类型 一种类型必须继承自另一种类型或实现另一种类型 抛出 InvalidCastException
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

另请参阅