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.

Consulta también