Share via


DirectCast (Operador) (Visual Basic)

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 manera similar a como se utiliza la palabra clave CType (Función) (Visual Basic) y TryCast (Operador) (Visual Basic). Proporcione una expresión como primer argumento y el tipo al que se va a convertir como segundo argumento. DirectCastnecesita que exista una relación de herencia o implementación entre los dos tipos de datos de los dos argumentos. Esto significa que un tipo debe heredarse del otro o implementar al otro.

Errores

DirectCast genera un error del compilador si detecta que no existe ninguna relación herencia o de implementación. Sin embargo, la ausencia de un compilador no garantiza que la conversión se realice correctamente. Si la conversión deseada es de restricción, puede producirse 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 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

CType (Función) (Visual Basic)

Cualquier tipo de datos

La conversión de ampliación o restricción debe definirse entre dos tipos de datos

Produce InvalidCastException

DirectCast

Cualquier tipo de datos

Un tipo debe heredarse del otro tipo o implementarlo

Produce InvalidCastException

TryCast (Operador) (Visual Basic)

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 puede convertirse 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

Referencia

Convert.ChangeType

Conceptos

Conversiones de ampliación y de restricción (Visual Basic)

Conversiones implícita y explícita (Visual Basic)