Incohérence inattendue dans les enregistrements C# : un problème avec l’opérateur `with`
L'auteur a découvert une incohérence inattendue lors de l'utilisation d'enregistrements C#. Lors de la mise à jour d'enregistrements contenant des données dérivées avec l'opérateur `with`, les données dérivées ne sont pas recalculées, ce qui entraîne des incohérences. Cela provient du fait que l'opérateur `with` n'appelle pas le constructeur, mais utilise un constructeur de copie pour créer une copie, puis modifier les propriétés. Plusieurs solutions sont proposées, notamment éviter l'utilisation de `with` sur les enregistrements complexes, écrire un analyseur Roslyn pour détecter le problème, utiliser `Lazy` pour le calcul différé des propriétés et demander une modification du langage. Cet article souligne un piège potentiel dans les enregistrements C#, mettant en garde les développeurs contre l'utilisation de l'opérateur `with`, en particulier avec des données dérivées.