TryCast
Actualización: noviembre 2007
Introduce una operación de conversión de tipos que no produce una excepción.
Comentarios
Si se produce un error al intentar llevar a cabo una conversión, CType y DirectCast producen un error InvalidCastException. Esto puede afectar negativamente al rendimiento de la aplicación. TryCast devuelve Nothing (Visual Basic), de modo que en lugar de controlar una posible excepción, sólo debe comprobar el resultado devuelto con Nothing.
Utilice la palabra clave TryCast del mismo modo que utiliza las palabras clave CType (Función) y DirectCast. Proporcione una expresión como primer argumento y el tipo al que se va a convertir como segundo argumento. TryCast sólo funciona en tipos de referencia, como clases e interfaces. Requiere que exista una relación de herencia o implementación entre los dos tipos. Esto significa que un tipo debe heredarse del otro o implementar al otro.
Errores
TryCast genera un error del compilador si detecta que no existe ninguna relación de herencia o implementación. Sin embargo, la ausencia de un compilador no garantiza el éxito de la conversión. Si la conversión deseada es de restricción, puede producirse un error en tiempo de ejecución. Si esto ocurre, TryCast devuelve Nothing (Visual Basic).
Palabras clave para conversiones
A continuación se incluye una comparación de las palabras clave de conversión de tipos.
Palabra clave |
Tipos de datos |
Relación de argumentos |
Error en tiempo de ejecución |
---|---|---|---|
Cualquier tipo de datos |
La conversión de ampliación o restricción debe definirse entre dos tipos de datos |
Produce InvalidCastException |
|
Cualquier tipo de datos |
Un tipo debe heredarse del otro tipo o implementarlo |
Produce InvalidCastException |
|
TryCast |
Sólo tipos de referencia |
Un tipo debe heredarse del otro tipo o implementarlo |
Devuelve Nothing (Visual Basic) |
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