Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Presenta una operación de conversión de tipos basada en la herencia o la implementación.
Observaciones
DirectCast no usa las rutinas auxiliares en tiempo de ejecución de Visual Basic para la conversión, por lo que puede proporcionar un rendimiento algo mejor que CType al convertir a y desde el tipo Objectde datos .
DirectCast La palabra clave es similar a la forma en que se usa el operador CType y la palabra clave TryCast Operator. Se proporciona una expresión como primer argumento y un tipo para convertirlo como segundo argumento.
DirectCast requiere una relación de herencia o implementación entre los tipos de datos de los dos argumentos. Esto significa que un tipo debe heredar de o implementar el otro.
Errores y errores
DirectCast 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 está estrechando, podría producir un error en tiempo de ejecución. Si esto sucede, el tiempo de ejecución produce un InvalidCastException error.
Palabras clave de conversión
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 |
|---|---|---|---|
| Operador CType | Cualquier tipo de datos | La conversión de ampliación o restricción debe definirse entre los dos tipos de datos. | Lanza InvalidCastException |
DirectCast |
Cualquier tipo de datos | Un tipo debe heredar de o implementar el otro tipo | Lanza InvalidCastException |
| TryCast (operador) | Solo tipos de referencia | Un tipo debe heredar de o implementar el otro tipo | Devuelve Nothing |
Ejemplo
En el ejemplo siguiente se muestran dos usos de , uno que produce un error en tiempo de DirectCastejecución y otro que se ejecuta correctamente.
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 de tiempo de ejecución de q es Double.
CType se realiza correctamente porque Double se puede convertir en Integer. Sin embargo, se produce un error en el primer DirectCast error en tiempo de ejecución porque el tipo de tiempo de ejecución de no tiene ninguna relación de Double herencia con Integer, aunque exista una conversión. El segundo DirectCast se realiza correctamente porque convierte de tipo Form a tipo Control, desde el que Form hereda.