TryCast (Operador) (Visual Basic)

Presenta una operación de conversión de tipos que no produce una excepción.

Comentarios

Si se produce un error en una conversión intentada, se produce un error InvalidCastException en CType y DirectCast. Esto puede afectar negativamente al rendimiento de la aplicación. TryCast devuelve Nothing, de modo que, en lugar de tener que controlar una posible excepción, solo necesita probar el resultado devuelto en Nothing.

La palabra clave TryCast se usa de la misma manera que usa la función CType y la palabra clave Operador de DirectCast. Se proporciona una expresión como primer argumento y un tipo en el que convertirla como segundo argumento. TryCast solo funciona con tipos de referencia, como clases e interfaces. Requiere una relación de herencia o implementación entre los dos tipos. Esto significa que un tipo debe heredar del otro o implementarlo.

Errores

TryCast genera un error del compilador si detecta que no existe ninguna relación de herencia o implementación. Pero la ausencia de un error del compilador no garantiza una conversión correcta. Si la conversión deseada se está estrechando, podría producir un error en tiempo de ejecución. Si esto sucede, TryCast devuelve Nothing.

Palabras clave para conversiones

Una comparación de las palabras clave de conversión de tipos es la siguiente.

Palabra clave Tipos de datos Relación de argumento Error en tiempo de ejecución
CType Function Todos los tipos de datos La conversión de ampliación o restricción debe definirse entre los dos tipos de datos Genera InvalidCastException
Operador DirectCast Todos los tipos de datos Un tipo debe heredar del otro o implementarlo Genera InvalidCastException
TryCast Solo los tipos de referencia Un tipo debe heredar del otro o implementarlo Devuelve Nothing

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar 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

Consulte también