DirectCast (Operador) (Visual Basic)
Presenta una operación de conversión de tipos basada en la herencia o la implementación.
Comentarios
DirectCastno usa las rutinas Visual Basic asistente en tiempo de ejecución para la conversión, por lo que puede proporcionar un rendimiento algo mejor que al convertir a y desde el tipo CType de datos Object .
La palabra clave DirectCast se usa de forma similar a la forma en que se usa la función CType y la palabra clave TryCast Operator. Se proporciona una expresión como primer argumento y un tipo al que se va a convertir 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 del otro o implementarlo.
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 es de reducción, podría producir un error en tiempo de ejecución. Si esto sucede, el tiempo de ejecución produce un InvalidCastException error.
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 argumentos | Error en tiempo de ejecución |
|---|---|---|---|
| CType Function | Cualquier tipo de datos | La conversión de ampliación o de reducción debe definirse entre los dos tipos de datos | Lanza InvalidCastException |
DirectCast |
Cualquier tipo de datos | Un tipo debe heredar del otro tipo o implementarlo. | Lanza InvalidCastException |
| Operador TryCast | Solo tipos de referencia | Un tipo debe heredar del otro tipo o implementarlo. | Devuelve Nothing |
Ejemplo
En el ejemplo siguiente se muestran dos usos de , uno que produce un error en tiempo de DirectCast ejecución y otro que se realiza 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 en tiempo de ejecución q de es Double . CType se realiza Double correctamente porque se puede convertir en Integer . Sin embargo, el primer error se produce en tiempo de ejecución porque el tipo en tiempo de ejecución de no tiene ninguna relación de herencia con , aunque DirectCast Double exista una Integer conversión. El segundo DirectCast se realiza correctamente porque convierte del tipo Form al tipo , del que Control Form hereda.