csharp-tipos-anonimos

Qué son y cómo usar los tipos anónimos en C#

Los tipos anónimos en C# son una funcionalidad que nos permite crear objetos en tiempo de ejecución sin tener que definir explícitamente una clase.

Proporcionan una forma rápida y conveniente de encapsular un conjunto de propiedades en un solo objeto sin tener que definir una clase específica para ello

Estos tipos se introdujeron en C# 3.0 y se utilizan comúnmente en escenarios donde se necesita almacenar datos temporales, como por ejemplo en consultas LINQ.

Algunas de las características de los tipos anónimos son,

  • Inmutabilidad: Una vez creado, un tipo anónimo no puede cambiar sus propiedades.
  • Tipado fuerte: Aunque son anónimos, los tipos anónimos son fuertemente tipados y su estructura es conocida en tiempo de compilación.
  • Uso temporal: Son ideales para almacenar datos temporales, especialmente en consultas LINQ.

Creación de tipos anónimos

Para crear un tipo anónimo, se utiliza la palabra clave new seguida de un inicializador de objeto. Aquí hay un ejemplo simple:

var persona = new { Nombre = "Juan", Edad = 30 };
Console.WriteLine($"Nombre: {persona.Nombre}, Edad: {persona.Edad}");

En este ejemplo, persona es un tipo anónimo con dos propiedades: Nombre y Edad.

Los tipos anónimos tienen ciertas limitaciones. Por ejemplo, no se pueden definir métodos en ellos ni se pueden usar fuera del ámbito en el que se crearon.

Uso de tipos anónimos

Tipos anónimos con expresiones lambda

Los tipos anónimos son frecuentemente utilizados con expresiones lambda, especialmente en el contexto de LINQ.

var personas = new[]
{
    new { Nombre = "Lucía", Edad = 25 },
    new { Nombre = "Marta", Edad = 28 }
};

var nombres = personas.Select(p => new { p.Nombre });

foreach (var nombre in nombres)
{
    Console.WriteLine(nombre.Nombre);
}

Tipos anónimos con métodos

Los tipos anónimos pueden ser retornados de métodos, pero se debe tener cuidado ya que no se puede especificar el tipo de retorno explícitamente. En estos casos, se suele utilizar var.

var resultado = CrearTipoAnonimo();
Console.WriteLine($"Nombre: {resultado.Nombre}, Edad: {resultado.Edad}");

var CrearTipoAnonimo()
{
    return new { Nombre = "Carlos", Edad = 28 };
}

Tipos anónimos anidados

Es posible crear tipos anónimos anidados, es decir, un tipo anónimo dentro de otro tipo anónimo.

var empresa = new
{
    Nombre = "TechCorp",
    Empleado = new { Nombre = "Ana", Edad = 29 }
};

Console.WriteLine($"Empresa: {empresa.Nombre}, Empleado: {empresa.Empleado.Nombre}, Edad: {empresa.Empleado.Edad}");