Inconsistencia inesperada en registros C#: Un problema con el operador `with`

2025-07-22
Inconsistencia inesperada en registros C#: Un problema con el operador `with`

El autor descubrió una inconsistencia inesperada al usar registros C#. Al actualizar registros que contienen datos derivados con el operador `with`, los datos derivados no se recalculan, lo que lleva a inconsistencias. Esto se debe a que el operador `with` no llama al constructor, sino que utiliza un constructor de copia para crear una copia y luego modificar las propiedades. Se proponen varias soluciones, incluyendo evitar el uso de `with` en registros complejos, escribir un analizador Roslyn para detectar el problema, usar `Lazy` para el cálculo diferido de propiedades y solicitar un cambio en el lenguaje. Esta publicación destaca una posible trampa en los registros C#, alertando a los desarrolladores sobre el uso del operador `with`, especialmente con datos derivados.

Desarrollo