Publicado el Viernes 01 de diciembre de 2006 a las 08:35:05 por davilafon
Lecturas
Introducción
En este articulo examinaremos una de las nuevas características del .net framework 2.0, se trata de Generics... Comenzando...
La nueva característica del .net framework llamada Generics nos permite mejorar el rendimiento en tiempo de ejecución cuando implementamos métodos o clases que tengan que manejar tipos de datos que no necesariamente estén relacionados. Un ejemplo bien claro de esto lo tenemos si empleamos un ArrayList, que no es mas que un matriz optimizada para crecer dinámicamente, aunque tiene el inconveniente de que el tipo que maneja es Object, esto implica que cada vez que insertemos un dato o lo extraigamos, se debe llevar a cabo una conversión (boxing, unboxing) esto consume recursos y más aun cuando se trata de colecciones. Es aquí donde podemos encontrar una de las tantas ventajas que presenta Generics, ya que podemos crear una colección optimizada para ser dinámica pero que sea capaz de tratar cada dato como el tipo que es, una colección con esta característica ya esta implementada en System.Collections.Generic y recibe el nombre de List. Ahora bien como es que es posible este comportamiento tan genérico en una solo tipo, la respuesta esta en el uso de parámetros de tipo (type parameters), veamos un ejemplo para una mejor comprensión Class MiColeccion(Of T)
Sub Add(ByVal Value As T) '... End Sub
End Class
Lo primero que nos llama la atención es la inclusión de un paréntesis justo al final de la declaración de la Clase MiColeccion, y dentro vemos la palabra of seguida de “T”. Bueno, como ya podrás imaginarte este es un parámetro de Tipo; en cualquier lugar donde intervenga el tipo T será sustituido (mediante el JIT) en tiempo de ejecución por el tipo que pasemos a la hora de crear la instancia. Veamos un ejemplo para que no se te crucen los “tipos”: Dim ColecciónDeString As New MiColeccion(Of String) ColeccionDeString.Add("un string")
En este caso en tiempo de ejecución se sustituirá el tipo T por el tipo String y la clase se comportaría de la siguiente manera. Class MiColeccion(Of String)
Sub Add(ByVal Value As String) '... End Sub
End Class
¿Qué, ya lo has entendido? Bien por ti, pero estamos empezando. Ya sabes de que va esto de Generics, como ves se ahorra mucho código (y con mucho estilo por cierto) y se aumenta el rendimiento del programa. Pasemos ahora a los métodos genéricos. Un método genérico guarda muy poca diferencia con una clase genérica (Ojo, no creas que el método Add es genérico solo porque recibe un parámetro que es de un Tipo Genérico,).Tanto los métodos como las clases genéricas tienen presente la palabra clave Of, lo que en el caso de los métodos estaríamos ya en presencia de dos lista de parámetros, los que estamos acostumbrados a usar y los de reciente adquisición. Al igual que en las clases podemos definir tantos tipos genéricos como necesitamos. La sintaxis seria así: Sub (Of )(
un Pifffffffffffffff para David E. Davila Fontecha !!!! si copias un articulo lo minimo que puedes hacer es citar la fuente nuuu?. Autor del articulo : Horacio N. Hdez. ruta web www.mundoprogramacion.com/colabora/NET2006/horacio_generics_vbnet.htm por que la gente tiene q hacer estas cosas?? no es mejor tener la satisfaccion de redactar un arcticulo propio?? en fin