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