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 un intento de CType conversión y DirectCast ambos inician un InvalidCastException error. Esto puede afectar negativamente al rendimiento de la aplicación. TryCast devuelve Nothing, por lo que en lugar de tener que controlar una posible excepción, solo necesita probar el resultado devuelto con Nothing .

La palabra clave TryCast se usa de la misma manera que la función CType y la palabra clave DirectCast Operator. Se proporciona una expresión como primer argumento y un tipo al que se va a convertir como segundo argumento. TryCast solo funciona en 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 y errores

TryCast genera un error del compilador si detecta que no existe ninguna relación de herencia o implementación. Pero la falta de un error del compilador no garantiza una conversión correcta. Si la conversión deseada es de reducción, 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 argumentos Error en tiempo de ejecución
CType Function Cualquier tipo de datos La conversión de ampliación o de reducción debe definirse entre los dos tipos de datos Lanza InvalidCastException
Operador DirectCast Cualquier tipo de datos Un tipo debe heredar del otro tipo o implementarlo. Lanza InvalidCastException
TryCast Solo tipos de referencia Un tipo debe heredar del otro tipo 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

Consulta también