Records en C#
Los record
en C# son tipos de referencia especiales diseñados para almacenar datos inmutables
de forma concisa.
Introducidos en C# 9, ofrecen comparaciones estructurales, una sintaxis compacta y soporte incorporado para
con constructores, igualdad y desestructuración.
Son ideales para modelar DTOs, resultados de operaciones y estados inmutables.
Definir un record
Puedes declarar un record de forma muy concisa con la sintaxis de posición.
public record Persona(string Nombre, int Edad);
Esto crea propiedades inmutables, un constructor, métodos de igualdad y ToString
automáticamente.
Usar un record
Crear instancias es tan sencillo como llamar al constructor.
var persona1 = new Persona("Alice", 30); Console.WriteLine(persona1); // Salida: Persona { Nombre = Alice, Edad = 30 }
Los records se imprimen de forma legible automáticamente.
Comparación estructural
A diferencia de las clases, los records se comparan por valor.
var persona2 = new Persona("Alice", 30); Console.WriteLine(persona1 == persona2); // True
Esto es útil para comparar contenido en lugar de referencias.
Con with expressions
Puedes crear copias inmutables con cambios.
var persona3 = persona1 with { Edad = 31 }; Console.WriteLine(persona3); // Salida: Persona { Nombre = Alice, Edad = 31 }
Permite modificar propiedades sin alterar el objeto original.
Buenas Prácticas
Usa records para datos inmutables y DTOs.
Evita lógica compleja en records.
Aprovecha la comparación estructural para pruebas y validaciones.
Usa with
para cambios seguros.
Considera records en jerarquías con inheritance solo si tiene sentido semántico.