Anonymous Types
Los anonymous types son un
feature
del .Net Framework 3.0 que permite crear tuplas ó tipos de datos inexistentesautomáticamente en tiempo de compilación. Pareciera complicado, pero es bastante sencillo. Lo que sucede es que sinecesitamos un objeto que contenga las propiedades “Nombre” y “Apellido”, por ejemplo para obtener los nombres yapellidos de una lista de trabajadores guardada en una base de datos en SQL Server, normalmente lo que tendríamosque hacer es crear nuestra
class
ó
struct
Trabajador, con estas 2 propiedades. Lo que nos permiten los AnonymousTypes, es solo asignar las propiedades que queramos a un
object initializer
con el
keyword var
y el compiladorautomáticamente creará esta clase, con sus respectivas properties en tiempo de compilación.Por ejemplo:
var p1 =new{Name ="Jair", LastName ="Cazarin"};
Y nuestro compilador de C# 3.0 nos producirá algo así:
class __Anonymous1{ private stringname ;
private stringlastName;
public stringName{get{returnname; }set{ name =value; } }
public stringLastName{get{returnlastName; }set{ lastName=value; } }
}__Anonymous1 p1 =new__Anonymous1();p1.Name ="Jair";p1.LastName ="Cazarin";
Extension Methods
Seguramente se preguntaron, cuando vieron el primer ejemplo, de dónde salieron los
keywords
select, y where si unarray no tiene estos métodos, y la respuesta es usando
Extension Methods
. Y el objetivo de los mismos esprecisamente ese, el de extender métodos y clases ya existentes. Ahora deben estar pensando, y no para eso era laherencia? Así es, pero uno de los problemas es que cuando no se tiene acceso al código fuente, se vuelve muylimitado ya que muchas clases restringen la herencia o a ciertas propiedades (
Sealed Class
[6]).Para hacerlo solo necesitamos usar el
keyword
this
en el argumento del método y que el método sea
static
. Ejemplo:
static class Program
{ static voidMain(string[] args)
{ strings ="Hello, world";
s.Print();} static voidPrint(this strings)
{Console.WriteLine(s);}}
En este caso estamos añadiendole la funcionalidad de
Print
a un
string
.
Lambda Expressions
Las
lambda Expressions
están basados en el
Lambda Calculus
[7]el cual viene desde mucho tiempo atrás en losinicios de la computación y son una característica muy importante de los lenguajes funcionales como Lisp[8], fuecreado por Alonzo Church y Stephen Cole Kleene (Si, el de la cerradura de Kleene).Lo que nos proporcionan las
Lambda Expressions
en C# son una forma más limpia de declarar lo que lanzó Microsoften .net 2.0:
Anonymous Methods
. Y para LINQ nos sirve para hacer expresiones muy poderosas y elegantes dentro del
statement where
, solo como un ejemplo. Para tener una idea más clara de lo que son, supongamos como se haría undelegate con Anonymous Methods:
Leave a Comment