Logo de Torre de Babel
Portada Libros Diseño web Artículos Glosario RSS
Buscar

Conversiones en Visual Basic 2005

En Visual Basic 2005, como en la mayoría de los actuales lenguajes orientados a objetos y, en particular, aquellos que generan aplicaciones para la plataforma .NET, las variables que van a contener referencias a objetos se declaran con un tipo concreto, lo cual facilita su uso porque al conocerse el tipo durante la fase de diseño, el compilador puede efectuar comprobaciones estrictas y evitar ciertos tipos de errores. En ocasiones, sin embargo, nos encontraremos en la necesidad de convertir referencias genéricas, de tipo Object, a tipos concretos. Es lo que ocurre, por ejemplo, al recuperar objetos almacenados en listas, controles ListBox o TreeView, o bien ciertas estructuras de datos, como ArrayList.

En Visual Basic 6 la conversión de tipos se llevaba a cabo con la función CType(), mientras que en Visual Basic .NET apareció la función DirectCast(). Ambas se comportan de manera similar y permiten efectuar una conversión de tipo siempre que exista una relación, ya sea de herencia entre clases o de interfaces, entre el tipo real del objeto y el tipo al que quiere convertirse. Si esa conversión no es posible, ambas funciones producen una excepción. En la práctica esto nos obliga a utilizar un bloque Try/Catch, para controlar la posible excepción, siempre que vayamos a intentar una conversión.

En Visual Basic 2005 existe una alternativa: la función TryCast(). Ésta también convierte referencias a objetos de unos tipos a otros, pero si la conversión no es posible no se genera excepción alguna, sino que simplemente se devuelve el valor Nothing. Esto nos permite escribir código como el siguiente:


objeto = TryCast(genérico, específico)
If objeto IsNot Nothing Then
  objeto.método
End If

No es necesario, por tanto, utilizar el control estructurado de excepciones para evitar que, si la conversión falla, el programa pueda llegar a interrumpir su ejecución.


Publicado el 29/8/2007

Curso de shaders

Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web