Inconsistência Inesperada em Registros C#: Um Problema com o Operador `with`

2025-07-22
Inconsistência Inesperada em Registros C#: Um Problema com o Operador `with`

O autor descobriu uma inconsistência inesperada ao usar registros C#. Ao atualizar registros contendo dados derivados com o operador `with`, os dados derivados não são recalculados, levando a inconsistências. Isso decorre do operador `with` não chamar o construtor, mas sim usar um construtor de cópia para criar uma cópia e, em seguida, modificar as propriedades. Várias soluções são propostas, incluindo evitar o uso de `with` em registros complexos, escrever um analisador Roslyn para detectar o problema, usar `Lazy` para cálculo de propriedades diferido e solicitar uma alteração na linguagem. Esta publicação destaca uma armadilha potencial em registros C#, alertando os desenvolvedores sobre o uso do operador `with`, especialmente com dados derivados.

Desenvolvimento Registros operador with