Tipos anónimos en C#.NET

En forCode os haremos una breve y escueta explicación sobre tipos anónimos c#.net.

¿Que es?

Antes de nada, tipos anónimos no es lo mismo que inferencia de datos.

Los tipos anónimos difieren de la inferencia de datos. La inferencia se usa para crear tipos de objetos ya existentes, y los tipos anónimos, para crear objetos “recortados”, los creas «al vuelo».

Me explico, lo que puedes crear con los tipos anónimos son objetos, de los cuales solo puedes puedes definir las propiedades.

var persona = new { nombre="Eric", apellido="Torre", diaNacimiento=9};

Vamos a ello

Con el anterior código, hemos creado un objeto con las propiedades de nombre(String), apellido(String),diaNacimiento(Integer). Lo que hace internamente es lo siguiente:

El objeto se declararía así (internamente):

class f__AnonymousType0<T0, T1, T2>{
public T0 nombre;
public T1 apellido;
public T2 diaNacimiento;
}

Y la declaración sería (internamente):

var persona = new f__AnonymousType0<string, string, int>{"Eric";, "Torre", 9};

Para comparar los objetos anónimos, comprobara el contenido de las propiedades, se puede usar Equals o == , la diferencia es que Equals comprueba también el tipo.

Anónimos con Arrays

Por supuesto, una propiedad puede interesarnos que una propiedad sea un array, este ejemplo son de un listado de lenguajes de programación y otro parámetro, que es el día de nacimiento:

var persona = new
{
nombre="for",
apellido="Code",
lenguajes= new[]{
new {nombre="Php"},
new {nombre=".Net"},
new {nombre="java"}
},
diaNacimiento=9
};

Anónimos con colecciones

Por supuesto, una propiedad puede interesarnos que una propiedad sea una colección, este ejemplo son de un listado de lenguajes de programación:

var persona = new
{
  nombre="Eric",
  apellido="Torre",
  lenguajes= (new[]{
    new {nombre="php"},
    new {nombre="vb"},
    new {nombre="c#"},
    new {nombre="asp"},
    new {nombre="java"}
   })ToList(),
   diaNacimiento=9
};

Esperamos que os sirva de ayuda!