Artículos relacionados:
Parte 1, Parte 2, Parte 3.1, Parte 3.2
En esta ocasión hablaremos sobre Tipos Anónimos y Métodos de Extensión.
Tipos Anónimos
Son una forma abreviada de inicializadores de objetos que permiten omitir la especificación del tipo cuando se inicializan objetos o colecciones temporales. Por ejemplo en el articulo anterior utilizamos la clase LineaProducto, podríamos omitir la especificación del tipo y por ende eliminar la necesidad de la definición de la clase. Los tipos anónimos son tipos esenciales para las proyecciones de LINQ, las cuales permiten incorporar el equivalente en LINQ de una lista de campos en una consulta SQL (mediante la instrucción SELECT).
veamos un ejemplo:
C#
VB
El compilador infiere el tipo de las tuplas, por lo que los objetos resultantes son strongly typed definidos así: IEnumerable<<int, int, decimal>> y IEnumerable(of VB$AnonymousType_0 (of Integer, Integer, Decimal)) respectivamente.
Métodos de Extensión
Estos permiten agregar métodos propios a tipos previamente definidos, incluso si estos son sealed en C# o NotInheritable en VB. Por ejemplo el tipo string / String es sealed y tiene varios métodos accesados por (.) como stringTest.Lenght() o “esto es un test”.Lenght(). El compilador trata estas sentencias como si fueran miembros de una librería de funciones como Length(stringTest) o Length(“esto es un test”).
Por ejemplo el método length genera una excepción si el valor es null o nothing. Seria útil tener un método LengthNullable() que retornara int?, Integer? o Nullable(of Integer) que eliminaría la necesidad de revisar si el valor es null o Nothing antes de invocar al método Length. Veamos como se puede hacer utilizando métodos de extensión.
C#
Los métodos de extensión deben ser definidos como public static anteponiendo la instrucción this al primer argumento del método el compilador sabe que es un método de extensión, el segundo argumento es el tipo al que aplica el método para este ejemplo string y el tercero es el nombre de la instancia. Los métodos de extensión tienen soporte para IntelliSense.
VB
De acuerdo a la documentación de Visual Studio 2008 se pueden aplicar métodos de extensión a los siguientes tipos Clases, Estructuras, Interfaces, Delegados y Arreglos.
Hasta la próxima.
No hay comentarios.:
Publicar un comentario