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 = "Luis", 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}");