DirectCast
Actualización: noviembre 2007
Introduce una operación de conversión de tipos basada en la herencia o la implementación.
Comentarios
DirectCast no utiliza rutinas auxiliares para conversión de Visual Basic en tiempo de ejecución, por lo que puede proporcionar un mejor rendimiento que CType para convertir al tipos de datos Object y desde él.
Se utiliza la palabra clave DirectCast de la misma manera que se utiliza la palabra clave CType (Función) y TryCast. Se proporciona una expresión como primer argumento y un tipo para convertir como segundo argumento. DirectCast requiere una relación de herencia o de implementación entre los tipos de datos de los dos argumentos. Esto significa que un tipo debe heredar de otro o implementar otro.
Errores y problemas
DirectCast genera un error del compilador si detecta que no existe ninguna relación herencia o de implementación. No obstante, la falta de errores del compilador no garantiza una conversión correcta. Si se restringe la conversión deseada, se podría producir un error en tiempo de ejecución. Si es así, el tiempo de ejecución produce un error InvalidCastException.
Palabras clave para conversiones
A continuación se muestra una comparación de las palabras clave de conversión de tipos.
Palabra clave |
Tipos de datos |
Relación de argumento |
Error en tiempo de ejecución |
---|---|---|---|
Cualquier tipo de datos |
La conversión de ampliación o de restricción se debe definir entre los dos tipos de datos |
Produce InvalidCastException |
|
DirectCast |
Cualquier tipo de datos |
Un tipo debe heredarse del otro tipo o implementarlo |
Produce InvalidCastException |
Sólo tipos de referencia |
Un tipo debe heredarse del otro tipo o implementarlo |
Devuelve Nothing (Visual Basic) |
Ejemplo
El ejemplo siguiente muestra dos usos de DirectCast, uno con un resultado satisfactorio en tiempo de ejecución y otro que no lo tiene.
Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)
En el ejemplo anterior, el tipo en tiempo de ejecución de q es Double. CType tiene un resultado satisfactorio porque Double se puede convertir en Integer. No obstante, el primer DirectCast no tiene un resultado satisfactorio porque el tipo en tiempo de ejecución de Double no tiene relación de herencia con Integer, aunque existe una conversión. El segundo DirectCast tiene un resultado satisfactorio porque convierte del tipo Form al tipo Control del que Form hereda.
Vea también
Conceptos
Conversiones de ampliación y de restricción
Conversiones implícitas y explícitas